Skip to main content

Full text of "PC Tech Journal Volume 05 Number 03"

See other formats


71486 ll 02166 


MARCH 1987 VOL. 5 NO. 3 *3.93 

FOR THE IBM SYS T E M S PROFESSIONAL 






DESKPRO 386 

Compaq’s Powerful Puny in the 80386 Sweepstakes 

COMPATIBILITY/PERFORMANCE UPDATE 
MODULA-2 ROUNDUP 


OURNAL 


_\ 



























Eureka: 


The Solver' 


Mnyone and 
am everyone who 
routinely works with 
equations needs 
Eureka: The Solver 

It solves the most com¬ 
plex equations in seconds. 
Whether you're a scientist, 
engineer, financial analyst, 
student, teacher, or some 
other professional, you 
need Eureka: The Solver! 

Any problem that can be 
expressed as a linear or non-linear 
equation can be solved with Eureka. 
Algebra, Trigonometry and Calculus 
problems are a snap. 

Eureka: The Solver also handles 
maximization and minimization 
problems, does plot functions, 
generates reports, and saves you 
an incredible amount of time. 

X+exp(X) = 10 
solved instantly instead 
of eventually! 

Imagine you have to "solve 
for X," where X + exp(X) — 10, and 
you don't have Eureka: The Solver. 
What you do have is a problem, 
because it's going to take a lot of 
time guessing at "X." Maybe your 
guesses get closer and closer to the 
right answer, but it's also getting 
closer and closer to midnight and 
you're doing it the hard way. 

With Eureka: The Solver, there's 
no guessing, no dancing in the dark— 
you get the right answer, right 
now. (PS: X = 2.0705799, and 
Eureka solved that one in .4 
of a second!) 


How to use Eureka: 

The Solver 

It's easy. 

1. Enter your equation into 
the full-screen editor 

2. Select the "Solve" command 

3. Look at the answer 

4. You're done 

You can then tell Eureka to 

■ Evaluate your solution 

■ Plot a graph 

■ Generate a report, then send the 
output to your printer, disk file 
or screen 

■ Or all of the above 


Eureka: The Solver includes 

S A full-screen editor 
S Pull-down menus 
S' Context-sensitive Help 
Ef On-screen calculator 
S Automatic 8087 math 
co-processor chip support 
S Powerful financial functions 
S Built-in and user-defined 
math and financial functions 
S Ability to generate reports 
complete with plots and lists 
S Polynomial finder 
S Inequality solutions 


Some of Eureka’s 
key features 

You can key in: 

S A formula or formulas 

S A series of equations—and 
solve for all variables 

S Constraints Ilike X has to be 
< or — 2) 

S A function to plot 

S Unit conversions 

S Maximization and minimization 
problems 

S Interest Rate/Present Value 
calculations 

S Variables we call “What hap¬ 
pens?," like "What happens if I 
change this variable to 21 and 
that variable to 27?" 


All this power for only 
$99.95! 

Equation-solving used to be a 
mainframe problem, but we've 
solved that problem. 

Eureka: The Solver is all you 
need—and it's yours for only 
$99.95! 

That kind of savings you can 
calculate with your fingers! 

System requirements 

IBM PC, AT, XT, Portable, 3270 or true compatibles. 

PC-DOS (MS-DOS) 2.0 and later. 384K. 


Introductory price—good through July 1, 1987 

__ oCl* 



4585 SCOUS VALLEY DRIVE 
SCOTTS VALLEY, CA 95066 
(408) 438-8400 TELEX: 172373 

GF6 


BORLA 

INTER N'-ATIONAL 


For the dealer nearest you or to order by phone call 

(800)255-8008 

Sl ., m in CA 1800) 742-1133 in Canada (800) 237-1136 









Turbo Prolog 


C d If you're at all interested in 
artificial intelligence, databases, expert 
systems, or new ways of thinking about 
programming, by all means plunk down 
your $ 100 and buy a copy of Turbo 
Prolog. Bnjce Webster B yte 9 9 


Only 

$99.95! 



Turbo Prolog, the natural language 
of Artificial Intelligence, is the most 
popular Al package in the world with more 
than 100,000 users. It's the 5th-generation 
computer programming language that 
brings supercomputer power to your IBM 
PC and compatibles. You can join the Al 
revolution with Turbo Prolog for only 
$99.95. Step-by-step tutorials, demo 
programs and source code included. 


Vew/ Turbo Prolog 
If Toolbox 

Our new Turbo Prolog Toolbox " 
enhances Turbo Prolog—with more 
than 80 tools and over 8,000 lines of 
source code that can easily be 
incorporated into your programs. It 
includes about 40 example programs 
that show you how to 
use and incorporate your 
new tools. 

New Turbo Prolog 
Toolbox features include: 

Business graphic generation 
Complete communications package 
File transfers from Reflex, dBASE III, 
1-2-3, Symphony 
A unique parser generator 
Sophisticated user-interface design 
tools 


It's the complete developer's 
toolbox and a major addition to 
Turbo Prolog. You get a wide variety 
of menus—pull-down, pop-up, line, 
tree and box—so you can choose the 
one that suits your application best. 
You'll quickly and easily learn how to 
produce graphics; set up communica¬ 
tions with remote devices; read 
information from Reflex? dBASE III? 
Lotus 1-2-3 • and Symphony • files; 
generate parsers and design user 
interfaces. All of this for only $99.95. 


Only 

$99.95! 


System requirements 

Turbo Prolog: IBM PC, XT, AT or true compatibles. PC-DOS (MS- 
DOS) 2.0 or later. 384K. Turbo Prolog Toolbox requires Turbo 
Prolog 1.10 or higher. Dual-floppy disk drive or hard disk. 512K. 




Turbo Pascal 


The power and high performance of 
Turbo Pascal is already in the hands of 
more than half-a-million people. The tech¬ 
nically superior Turbo Pascal is the de facto 
worldwide standard and the clear leader. 

The Turbo Pascal family includes: 

■ Turbo Pascal • 3.0 

■ Turbo Tutor ® 2.0 

■ Turbo Database Toolbox * 

■ Turbo Editor Toolbox • 

■ Turbo Graphix Toolbox 9 

■ Turbo GameWorks ® 

■ Turbo Pascal Numerical Methods 
Toolbox " 


Nt 


ew! Turbo Pascal 
Numerical Methods 
Toolbox 



Turbo Pascal, the worldwide standard in 
high-speed compilers, and family. 


i 6 The language deal of the century. 

Jeff Duntemann, PC Magazine 3 3 


What our new Numerical Methods 
Toolbox will do for you now: 

g) Find solutions 
to equations 
gj Interpolations 
gj Calculus: numerical derivatives 
and integrals 
gj Differential equations 
gj Matrix operations: inversions, 
determinants and eigenvalues 
gj Least squares approximations 
gj Fourier transforms 


As well as a free demo FFT pro¬ 
gram, you also get Least Squares 
Fit in 5 different forms: 

1. Power 

2. Exponential 

3. Logarithm 

4. 5-term Fourier 

5. 5-term Polynomial 

They're all ready to compile 
and run. 


All this for only $99.95! 


System requirements 

IBM PC, XT, AT or true compatibles. PC- 
DOS (MS-DOS) 2.0 or later. Turbo Pascal 
2.0 or later. Graphics module requires 
graphics monitor with IBM CGA, IBM 
EGA, or Hercules compatible adapter 
card, and requires Turbo Graphix 
Toolbox. 8087 or 80287 numeric co¬ 
processor not required, but recom¬ 
mended for optimal performance. 256K. 

Turbo Pascal 3.0 

Includes 8087 & BCD features for 16-bit 
MS-DOS and CP/M-86 systems. CP/M-80 
version minimum memory: 48K; 8087 
and BCD features not available. 128K. 


BI-1103 





















Turbo Basic 


V introducing Turbo 
1 Basic, the high¬ 
speed BASIC you'd 
expect from 
Borland! 

It's the BASIC compiler you've 
been waiting for. And it's so fast 
that you'll never have to wait 
again. 

Turbo Basic is a complete devel¬ 
opment environment; it includes a 
lightning-fast compiler, an inter¬ 
active editor, and a trace debug¬ 
ging system. 

Because Turbo Basic is compat¬ 
ible with BASICA, chances are that 
you already know how to use 
Turbo Basic. 

With Turbo Basic your 
only speed is "Full 
Speed Ahead"! 

You probably already know us 
for both Turbo PascaT and Turbo 
Prolog. 1 " Well, we've done it again! 

We created Turbo Basic, 
because BASIC doesn't have to be 
slow. 

In fact, building fast compilers is 
a Borland specialty; both our Turbo 
Pascal and our Turbo Prolog out¬ 
perform all their rivals by factors, 
and with Turbo Basic, we're proud 
to introduce the first high-speed 
BASIC compiler for the IBM 9 PC. If 
BASIC taught you howto walk, 
Turbo Basic will teach you how 
to run! 


The Critics' Choice 

11 Borland has succeeded in 
stretching the language without 
weighing us down with unneces¬ 
sary details ... Turbo Basic is the 
answer to my wish for a simple yet 
blindingly fast recreational utility 
language . .. The one language 
you can't forget how to use, Turbo 
Basic is a computer language for 
the missus, the masters, the 
masses, and me. 

Steve Gibson, InfoWorld 

Borland's Turbo Basic has advan¬ 
tages over the Microsoft product, 
including support of the high¬ 
speed 8087 math chip. 

John C. Dvorak 5 5 


Turbo Basic ends the 
basic confusion 

There’s now one standard: 

Turbo Basic. 

It's fast, BASICA-compatible, and 
because Turbo Basic is a Borland 
product, the price is right, the 
quality is there, and the power is 
at your fingertips. You see, Turbo 
Basic's part of the fast-growing 
Borland family of programming 
languages—we call it the "Turbo 
Family." Hundreds of thousands of 
users are already using Borland's 
languages, so you can't go wrong. 
So join a whole new generation of 
smart IBM PC users—get your 
copy of Turbo Basic today. You get 
an easy-to-read 300+ page 
manual, two disks, and a free 
MicroCalc spreadsheet—and an 
instant start in the fast new world 
of Turbo Basic. All of this for only 
$99.95—Order your copy of Turbo 
Basic today! 


Free spreadsheet included, 
complete with source code! 

Yes, we've included MicroCalc, our sample 
spreadsheet, complete with source code, 
so that you can get started right away with 
a "realprogram." You can compile and run 
it "as is," or modify it. 


A technical look at 
Turbo Basic 

gf Full recursion supported 
gf Standard IEEE floating-point 
format 

g( Floating-point support, with full 
8087 (math co-processor) 
integration. Software emulation if 
no 8087 present 
gf Program size limited only by 
available memory (no 64K 
limitation) 

g| EGA and CGA support 
g| /Access to local, static, and global 
variables 

gf Full integration of the compiler, 
editor, and executable program, 
with separate windows for 
editing, messages, tracing, and 
execution 

gf Compile, run-time, and I/O errors 
place you in the source code 
where error occurred 
gf New long integer (32-bit) data 
type 

gf Full 80-bit precision 
gf Pull-down menus 
gf Full window management 


System requirements 

IBM PC, XT, AT and true compatibles, PC-DOS (MS- 
DOS) 2.0 or later. One floppy drive, 256K. 



$99.9 5 * 


only 


BI-1103 









C 


T urbo C: The 
fastest most 
efficient and easy- 
to-use C compiler at 
any price 

Compilation speed is more than 
7000 lines a minute, which makes 
anything less than Turbo C an 
exercise in slow motion. Expect 
what only Borland delivers: Quality, 
Speed, Power and Price. 



Turbo C: a complete 
interactive development 
environment 

Like Turbo 
Pascal and 
Turbo Prolog, 
Turbo C comes 
with an interactive editor that will 
show you syntax errors right in your 
source code. Developing, debug¬ 
ging, and running a Turbo C 
program is a snap. 


Turbo C: The C compiler 
for amateurs and 
professionals 

If you're just beginning and 
you've "kinda wanted to learn C," 
now's your chance to do it the easy 
way. Like Turbo Pascal, Turbo C's 
got everything to get you going. 

If you're already programming 
in C, switching to Turbo C will 
considerably increase your 
productivity and help make your 
programs both smaller and faster. 
Actually, writing in Turbo C is a 
highly productive and effective 
method—and we speak from exper¬ 
ience. Eureka: The Solver and our 
new generation of software have 
been developed using Turbo C. 


Turbo C: The C compiler 
everybody's been 
waiting for. Everybody 
but the competition 

Borland's "Quality, Speed, Power 
and Price" commitment isn't idle 
corporate chatter. The $99.95 price 
tag on Turbo C isn’t a "typo," it's 
real. So if you'd like to learn C in a 
hurry, pick up the phone. If you're 
already using C, switch to Turbo C 
and see the difference for yourself. 


System requirements 

IBM PC, XT, AT and true compatibles. PC-DOS (MS- 
DOS) 2.0 or later. One floppy drive. 320K. 


Technical Specifications 

Ef Compiler: One-pass compiler 

generating linkable object modules 
and inline assembler. Included is 
Borland's high performance "Turbo 
Linker" The object module is com¬ 
patible with the PC-DOS linker. Sup¬ 
ports tiny, small, compact, medium, 
large, and huge memory model 
libraries. Can mix models with near 
and far pointers. Includes floating 
point emulator Iutilizes 8087 V 80287 
if installed). 

Ef Interactive Editor: The system 

includes a powerful, interactive full¬ 
screen text editor. If the compiler 
detects an error, the editor auto¬ 
matically positions the cursor 
appropriately in the source code. 

gf Development Environment: A 
powerful "Make" is included so 
that managing Turbo C program 
development is highly efficient. 

Also includes pull-down menus 
and windows. 

S' Links with relocatable object 
modules created using Borland's 
Turbo Prolog into a single program. 

S' ANSI C compatible. 

Ef Start-up routine source code 
included. 

[vf Both command line and integrated 
environment versions included. 


‘Introductory price—good through July 1, 1987 




Compile time 


3.89 


16.37 


13.90 


Compile and link time 


9.94 


29.06 


27.79 


Execution time 


5.77 


9.51 


13.79 


Object code size 


274 


Sieve benchmark (25 iterations) 


Turbo C 


Microsoft • C 


Lattice C 


Price 


$99.95 


$450.00 


$500.00 


Benchmark run on a 6 Mhz IBM AT using Turbo C version 1.0 and the Turbo 
Linker version 1.0; Microsoft C versbn 4.0 and the MS overlay linker version 
3.51; Lattice C version 3.1 and the MS object linker version 3.05. 

All Borland products are trademarks or registered trademarks of Borland International, Inc. or 
Borland I Analytica, Inc. Other brand and product names are trademarks or registered trademarks 
of their respective holders. Copyright 1987 Borland International Bl-l 103 


CIRCLE NO. 254 ON READER SERVICE CARD 






















Suggested retail prices: Btrieve, $245; multi-user Btrieve, $595; Xtrieve, $245; multi-user Xtrieve, 
$595 (for report generation, add $145 for single-user and $345 for multi-user). Available from SoftCraft 
and selected distributors. Requires PC-DOS or MS-DOS 2.X, 3.X, Xenix. Btrieve is a registered 
trademark and Xtrieve is a trademark of SoftCraft Inc. x From Computer Language, November 1985. 

CIRCLE NO. 201 ON READER SERVICE CARD 


Btrieve: 

The Programmer's Choice. 


W hen you're serious about application 

development, there's just one choice for file 
management: Btrieve. With what Computer Language calls 
"near mainframe functionality 1 ", Btrieve sets the file 
management standard for PC applications. With Btrieve 
loaded in your PC, your programs can use simple 
subroutine calls to retrieve, store and update records. 


B-tree 

based for high 
performance . Performance 
is all-important, especially as 
your database grows. That's 
why Btrieve implements the 
b-tree file structure—the 
fastest, most efficient method 
of accessing data. 


Multi-user versions for 
LANs and Xenix . When your 
applications need to network, count on 
Btrieve. A single version runs on all DOS 3 
LANs, including IBM PC Network and Novell Advanced 
Netware. Btrieve is also available for Xenix and 
multitasking operating systems such as MultiLink 
Advanced, Microsoft Windows and IBM Topview. 


Interfaces to C, BASIC, Pascal , 

COBOL . Don't waste time 
programming in awkward fourth generation 
languages! With Btrieve, simply use the languages 
you know best—and write applications the right 
way. Over 15 language 
interfaces available. 


Built-in security 
features. Lock up sensitive 
data with Btrieve's password protection and 
unique data encryption scheme—especially 
useful in local area networks. 


Help is 
just a phone 
call away. 

Need technical 
support? You've got it! 
Btrieve users receive 30 days 
of unlimited phone support at no charge. This 
"Direct Connect" policy is renewable for a full 
year at low cost. And try SoftCraft's free 
bulletin board for technical tips, seven days a week. 


Fault tolerant. Btrieve 
insures against database dis¬ 
asters. Two levels of fault 
tolerance guarantee data 
integrity during accidents or 
power failures—even if 
lightning strikes. No extra 
programming required. 


SoftCraft 


PO. Box 9802 #917 Austin, Texas 78766 (512) 346-8380 Telex 358 200 


Thorough documentation, easy implementation. Getting 
started with Btrieve is easy: the manual is packed with examples of 
every Btrieve function in BASIC, Pascal, COBOL and C. 


Database queries , report writing. Add Xtrieve ™ to your Btrieve 
applications for a fully-relational DBMS. Xtrieve 's menu-driven 
interface gives your users the on-line query capabilities they 
need—without programming. Add 
our report writer option to produce 
custom reports and forms. 


No royalties. 

Need we say more? 






























MARCH 1987 


gs 

OURNALT 



VOLUME 5, NUMBER 3 



Modular Developments 



Multilevel Debugger 



Mapping PC Address Space 


Compatibility and Performance: THE NEW STANDARD / STEVEN ARMBRUST and TED FORGERON 

No longer content to wait for IBM, Compaq introduced the Deskpro 386, the first AT compatible to house the Intel 80386. Our . 

tests show that this Compaq is the fastest on the market and holds great promise for the multitasking programs of the future. 48 

Compatibility and Performance: UPDATING THE EVALUATION SUITE / TED FORGERON, 

PAUL PIERCE and STEVEN ARMBRUST 

To keep up with advancing technology, PC Tech Journal's compatibility and performance metrics have been revised so that 

the)’ can identify the processor in the test machine—8086/88, 80286, or 80386—and evaluate performance accordingly. 70 


MULTILEVEL DEBUGGER / MARK S. ACKERMAN 

With CodeView, Microsoft has improved on its line-oriented debuggers, DEBUG and SYMDEB, by offering full debugging 
capabilities at both the source code and assembly levels. CodeView is packaged with Microsoft’s C and FORTRAN compilers. 


90 


MAPPING PC ADDRESS SPACE / AUGIE HANSEN 

Several maps of memory and I/O addresses serve as a guide to inner space for programmers and hardware designers who 
need to know where the important hardware elements of the PC are located and where new ones can be safely placed. 


102 


MODULAR DEVELOPMENTS / JOHN T. COCKERHAM 

Niklaus Wirth’s latest contribution to the field of computer languages boasts the strongest typing and structured syntax yet, , 

along with flexibility and low-level accessibility. Six Modula-2 compilers present a variety of choices for the systems developer. 114 


BINARY TRANSFER / RONALD FLORENCE 

The XMODEM protocol, considered the norm in PC-to-PC communications, can be adapted to transmit files between DOS 
and UNIX systems. Code is presented for producing a stand-alone remote XMODEM program for UNIX systems. 


144 


9 DIRECTIONS 

Performance Metrics 

15 LETTERS 
32 TECH RELEASES 

47 TECH NOTEBOOK 

XON/XOFF Printer 
Driver 


159 PROGRAMMING 
PRACTICES 

Procedural Algorithms 
in Prolog 

169 PRODUCT WATCH 

REPERTOIRE 

FILEMAX 

Mace Utilities 

BASTOC 


111 EXPERT CONSULTANT: 
APPLIED AI 

What Computers 
Cannot Do 

185 BOOK REVIEWS 

Approaching 

Modula-2 


188 TECH MART 

196 TECH MARKETPLACE 

208 CALENDAR 

209 READER SERVICE CARD 


Cover photograph • Marc David Cohen 



























' Software Tools ^ 

For Programmers & Non-Programmers 


Get ‘State of the Art’ performance 
and save valuable time with these 
high quality utilities! 

Opt-Tech Sort™ 

Opt-Tech Sort is a high performance Sort/Merge/Select 
utility. It can read, sort and write a file faster than most 
programs can even read the data. Example: 1,000 
records of 80 bytes can be read, sorted and a new file 
written in less than 10 seconds (IBM XT). Opt-Tech Sort 
can be used as a stand-alone program or called as a 
subroutine to over 25 different programming languages. 

All the sorting, record selection and reformatting facilities 
you need are included. A partial list of features includes: 
The ability to process files of any size. Numerous 
filetypes are supported including Sequential, Random, 
Delimited, Btrieve, dBASE II & III and many others. Up 
to 10 key fields can be specified (ascending or descend¬ 
ing order). Over 16 different types of data supported. 
Powerful record selection capability allows you to specify 
which records are to be included on your output. Record 
reformatting allows you to change the structure of your 
output record and to output special fields such as record 
numbers for use as indexes. 

MS-DOS $149. ★ NEW * Xenix $249. 

VERSION On-Line Help™ USS* 

On-Line Help allows you to easily add “Help Windows” 
to all your programs. On-Line Help is actually two help 
packages in one. You get BOTH Resident (pop-up) and 
Callable Help Systems. 

The resident version allows you to add help to any 
system. Your Help System is activated when the “Hot 
Keys” that you specify are pressed. You can then chain 
between help windows in any manner you desire. 

The callable version allows you to easily display help 
windows from your programs. A simple call to the help 
system makes the window appear. The original screen 
is automatically restored when the help window is 
cleared. On-Line Help is callable from over 20 different 
languages. 

You have full control over the help window content, size, 
color and location. 

MS-DOS $149. DemO $10. (apply toward purchase). 


Scroll & Recall™ 

Scroll & Recall is a resident screen and keyboard 
enhancement. It allows you to conveniently scroll back 
through data that has gone off the top of your display 
screen. Up to 27 screens of data can be recalled or writ¬ 
ten to a disk file (great for documenting systems opera¬ 
tions). Also allows you to easily recall and edit your 
previously entered DOS commands without retyping. 
Scroll & Recall is very easy to use. It’s a resident utility 
that’s always there when you need it. MS-DOS $69. 

Visa, M/C, AMEX, Check, Money Order, COD 
or Purchase Orders accepted. 

To order or to receive additional information just call 
and receive immediate highly qualified attention! 

Opt-Tech Data Processing 

P.O. Box 678 — Zephyr Cove, NV 89448 
^_ (702) 588-3737 _ y 



OJRNAL 


VOL. 5, NO. 3 


PUBLISHER: Newton Barrett 
EDITOR: Will Fastie 

EDITORIAL 


MANAGING EDITOR: Marjory Spraycar 

EXECUTIVE EDITOR: Julie Anderson 

SENIOR TECHNICAL EDITOR: Jim Shields 

TECHNICAL EDITORS: Caroline Halliday, David Methvin 

CHIEF COPY EDITOR: Susan Holly 

SENIOR COPY EDITOR: Gail Shaffer 

COPY EDITOR: Bruce Ansley 

PROOFREADER: Elizabeth Wardlaw 


NEW PRODUCTS EDITOR: Carole L. Eyring 
OFFICE MANAGER: Trish Ledbetter 
EDITORIAL SECRETARY: Valerie Rose 


RECEPTIONIST: Cecilia R. Titus 


CONTRIBUTING EDITORS: Steven Armbrust, Dave Browning, Michael 
Covington, Richard M. Foard, Ted Forgeron, Augie Hansen, Thomas V. 
Hoffmann, Henry F. Ledgard, Ted Mirecki, Max Stul Oppenheimer, 
Richard Schwartz, Robert Shostak 
ART & PRODUCTION 

ART DIRECTOR: Paula Jaworski 

ASSOCIATE ART DIRECTOR: Sharon Reuter 

ART ASSISTANT: Maria Sese 

PRODUCTION MANAGER: Alison Regan Mrohs 

CONTRIBUTING ARTISTS: Maciek Albrecht, David Povilaitis 

ADVERTISING SALES 

NATIONAL SALES MANAGER: Rita Burke 
ADVERTISING MANAGER/WEST COAST: Phyllis Egan 
MARKETING DIRECTOR: Gayl Sorota 
ASSISTANT TO THE PUBLISHER: Kathleen Abbott 
ADVERTISING COORDINATOR: Mary Martin 
MARKETING COORDINATOR: Kimberly Schroeder 
SALES SECRETARY: JeanMarie Donlin 

DISTRICT MANAGERS: Rosemarie Caruso—New England; Arlene 
Braithwaite—Southeast; Pat Toohey—Mid-Atlantic; Bill Barney—Midwest; 
Bill Bush, Deborah Gisonni, Nan Hanna—West Coast 
ACCOUNT REPRESENTATIVES: Polly White—New England/Southeast; 
Nanette Vilushis — Mid-Atlantic!Midwest; Carey Clarke, Steve 
Moorman—West Coast; John Blake—National Accounts, Mail Order; 
Classified advertising director—Kathryn Cumberlander 

CIRCULATION 

CIRCULATION MANAGER: Charles Mast 
CIRCULATION SALES DEVELOPMENT: Daniel Rosensweig 
MEDIA MANAGER: Melinda Kendall 

RETAIL SALES MANAGER: Carol Benedetto _ 

ZIFF-DAVIS PUBLISHING COMPANY, a division of Ziff Communications Co. 

PRESIDENT: Kenneth H. Koppel 

SENIOR VICE PRESIDENT, Marketing: Paul Chook 

VICE PRESIDENT, Operations: Baird Davis 

VICE PRESIDENT, Controller: John Vlachos 

VICE PRESIDENT, Creative Services: Herbert Stem 

VICE PRESIDENT, Circulation: Alicia Marie Ivans 

VICE PRESIDENT, Circulation Services: James Ramaley 

VICE PRESIDENT, Marketing Services: Ann Poliak Adelman 

VICE PRESIDENT, Development: Seth Alpert 

VICE PRESIDENT: Hugh Tietjen 

BUSINESS MANAGER: Gary A Gustafson 

PRODUCTION DIRECTOR: Walter J. Terlecki 

ZIFF COMMUNICATIONS COMPANY 


CHAIRMAN: Philip B. Korsant; PRESIDENT: Kenneth H. Koppel; SENIOR VICE PRESIDENT: 
Philip Sine; VICE PRESIDENTS: Laurence Usdin, William L. Phillips, J. Malcolm Morris, 
Steven C. Feinman; TREASURER: Selwyn /. Taubman; SECRETARY: Bertram A Abrams 

EDITORIAL OFFICE 


ADVERTISING OFFICES 

(East Coast/Midwest) Suite 800, 10480 Little Patuxent Parkway, Columbia, MD 
21044. 301/740-8300. (New England) 90 Everett Street, Arlington, MA oil74. 

617/868-4611. (West Coast) 34o0 Wilshire Blvd., Los Angeles, -- 

387-2100; 11 Davis Drive, Belmont, CA 94002. 415/598-2^90. 

SUBSCRIPTION INQUIRIES 

PC Ted) Journal, P.O. Box 2968, Boulder, CO 80321. Subscription service: 800/525-0643, 
303/447-9330. Back issues: send $7/copy ($8 outside U.S.) to Ziff-Davis Publishing, One Park 
Avenue, 4th floor, New York, NY 10016. _ 

PC Tech Journal (ISSN 0738-0194) is published bv Ziff-Davis Publishing Co., a division of 

Ziff Communications Co., One Park Ave., New York, NY 10016. Published monthly except 
semi-monthly in December. Subscription rate is $34.97 for one vear (13 issues). Additional 
postage for Canada and Foreign is $8.00/year. Second-class postage paid at New York, NY, 
and at additional mailing offices. POSTMASTER: Send address changes to PC Tech Journal 
P.O. Box 2968, Boulder, CO 80321. 


PC TECH JOURNAL is an independent journal, not affiliated in any way with International 

Business Machines Corporation. IBM is a registered trademark of International Business 
Machines Corp. Entire contents Copyright © 1987 Ziff-Davis Publishing Company, a division 
of Ziff Communications Company. All rights reserved; reproduction in whole or in pan 
without permission is prohibited. Direct written requests to Jean Lamensdorf, Licensing 
Manager, Reprints/Rights & Permissions, One Park Avenue, New York, NY 10016. 



Ai 

Z-\> 


1985 AWARD FOR 

BEST COMPUTER MAGAZINE 

Computer Press Association 


4 


CIRCLE NO. 222 ON READER SERVICE CARD 


PC TECH JOURNAL 





















The Periscope" Difference 


You’ll need it sooner or later 
if you’re doing serious software development 



W hen you’re writing large and/or complex pro¬ 
grams, it’s inevitable that you’ll have to deal 
with some tough debugging problems. Your debugger 
should help you find and solve those problems quick¬ 
ly. The more solid, dependable, and efficient your 
debugger is, the better able it is to help you out in 
those difficult situations. The big difference between 
Periscope™ and other debuggers is this: Periscope 
enables you to debug programs other debuggers can’t 
handle AND to debug in situations in which other 
debuggers won’t work! 

“We have been buying Periscope for about two years now, 
and have always been more than satisfied with the hard¬ 
ware, the software, and the responsiveness of the company. 
We have used Periscope in a great many difficult situations, 
where our only other alternative was a very expensive ICE 
(in circuit emulator). Periscope has performed most 
admirably\” writes Dr. William Ash, Technical Director, 
FEL Computing. 


P eriscope Quality. 

The reason for 
Product of the Month. 


“Periscope was chosen as the January (1986) Product of 
the Month because it represents what we felt was an ex¬ 
cellent balance between power and cost and it has an ex¬ 
traordinarily clean and innovative design... the overall 
aura of quality was too strong to ignore,” writes Jeff 
Duntemann, Technical Editor, PC Tech Journal, 7/86. 


T 


he Periscope Solution. 
A full line of debugging 
products that keep 
getting better. 


T he Periscope Promise. 

Continued product 
enhancement and user 
support. 


“I have used Periscope daily for the past few months for 
testing and debugging my assembly code and I am still con¬ 
vinced this is the finest hardware or software debugger 
available at any price,” writes long-time Periscope user 
Wynn Bailey. 


“Not only is your Periscope (Model I) software the greatest 
thing since K &R, but your support has won over even the 
heart of this hardened programmer,” writes Periscope user 
Mark Kumler of US Maintenance. “I had decided long ago 
that no one in the industry cared about their customers 
after the check was cashed. You have definitely changed 
my opinion on that subject!” 

• User ideas are often implemented 

• Your first software update is free; later up¬ 
dates are just $20 

• You get free technical support and advice 

• You can trade up for $10 plus the difference 
in price 

• You get a 30-Day, Money-Back Guarantee 


To Order or Receive Free 
Information, Call Toll-Free: 


There’s a model of Periscope to meet your needs and 
budget. The enhanced Version 3.0 gives you more 
value than ever before! Call for details. 


Periscope I has break-out switch & board 


with 56K of protected RAM.$345. 

Periscope II has break-out switch.$175. 

Periscope II-X (software-only model).$145. 


Periscope III has break-out switch & board 
with hardware breakpoints, a real-time 
trace buffer, and 64K of protected RAM .. .CALL. 


The 

PERIS* 

Company, Inc. 


<3||PE 


14 Bonnie Lane, Atlanta, GA 30328 


404-256-3860 


800/722-7006 B 


CIRCLE NO. 215 ON READER SERVICE CARD 
































ere’s an EGA card to get really 
excited about. 

Autoswitch. “The most versatile EGA 
board on the market today” that “even the 
klutziest novice should have up and running 
in less than 10 minutes!’ (PC World 9/86) 
That’s partly because it has “the best docu¬ 
mentation we’ve seen for such cards!’ 



(Infoworld 7/86) 

But “what really sets Autoswitch apart 
is its ability to auto¬ 
matically select 
appropriate video 
modes from its 
extensive built-in 
assortments!’ (PC 
World 9/86) 

In other words, 
we’ve “consolidated 


the best features of other EGA clones into 
one board, and added an automatic (software) 
switching feature” (Infoworld 7/86) that 
“work(s) flawlessly.” (Byte 1/87) 

“No board has been more successful 
at improving IBM’s original idea” (PC World 
9/86), and “none simplifies the mechanics 
and widens the choices as much as Paradise’s* 
Autoswitch EGA card!’ (Personal 
Computing 9/86) 

And that was before we introduced the 
Autoswitch EGA 480 Card with 132 column 
mode, 480 vertical line resolution, and 
extended our already unbeatable range of 
software applications support. 

For the name of your local dealer, call 
(415)871-4939. 

I"PARADISE 


CIRCLE NO. 230 ON READER SERVICE CARD 


AutoSwitch is a trademark of Paradise Systems, Inc. 

IBM is a registered trademark of International Business Machines Corporation. 







^ynerKist ic 
.Tandem 
HTeledyrie 
|ms Tikctrcn 
Line Trans«;c 
Items Tsend. 
[land United 
r Voice Prints 
|tem Digital 


nemt Techt 
■ nst turner 

■ll In to nil 

I Triad I 
U nidos y 
l/'ictorTeJ 

fc-oftw.in I 

|i Ison Lai 
I be Xyntj 


Ttlerate Systems Telesis Televidel 
Timeline Timeplex Technical Cj 
Systems Transnet Telecommunicj 
Laboratories Tymshare Ultra Sya 
Airlines Vermont Micro Systems 1 
Votan W. R. Grace Wang Labs Vj 
Wrstinghonse Weyerhaeuser WH 
XCOMP XEMAG XCEL ContrtJ 


racket" Associates Thermo 
fcaffic Control Technolc 
Hriainglc Software 

SaPA.II/fflB 

IMBBk. Jjf& 


WHAT'S THE SECRET DEBUGGING WEAPON 
USED BY EVERYBODY FROM BORLAND TO ORACLE? 


FREE 44-PAGE 


“WE COULDN’T HAVE DONE IT WITHOUT 
ATRON’S HARDWARE-ASSISTED 
SOFTWARE BUGBUSTERS, 


3 COM ADP AMP ARC/AMS AST 

Research AT&T Accent Software Access 
Technology Accuftber Accrues Active 
V(«e Activision Actiix Advance Tech¬ 
nology Advance Tdecomputer Systents 
Advanced Digital Aetna Akron Standard 
Allen BcaJley Alloy Computer Products 


ANSWER FROM ATRON. 


Philippe Kahn 
Borland Pres. 


Larry Ellison 
Oracle Pres. 


PROBE displays the program execution in detail, including sym¬ 
bols and source code for C, Pascal, or assembly language pro¬ 
grams. Which shows how out-of-range pointers got that way. 

The third plague, not enough room for the 
debugging symbol table to be co-resident in 
memory with a large program, was cured with 
1-megabyte of on-board, hidden, write-pro- 

„^ - ^ ,--- —tected memory. System memory was then free 

IT n< M m for the program, keeping the symbol table and 

CjhaCo»nt«§Cuu<Hl Cipher Lfcra GrtcaJjuin Citibank CmcorpCohetenrGolonran Gamrco Ccmjraq debugger Safe from deStfUCtion 

When the job of bugbusting 
was done, the wizards used 
their PROBEs as performance 
analyzers. So they could have 
both reliability and perfor¬ 
mance. So they could send 
only the best software into the 
field. 


Alphatype Alsys Alternative Technologies Amber Systems American 
Airlines American Computer Products BoeiiJC Bimker Rsrcio Barn Cuori- 
P*ny Bailesrech Boston Bankers Tms Banyan S»’5teii» Barber Coleman 
Baron Beatrice U-S. Foods Beckman Insmiments BeJJ Cksnuiumcaupcis 
Btn Northern Research Bendey Systems Berkeley Graphics Berman 
Technologies Broom Bccory Blaise Computing Boeing Aer->.-f\ace 
Boemg Computer Spurerm, Bodbnd lmem.it imJ Bolder SoJtviare Group 

Bc^ Systems Bridee CtnmMankaskns Bnd»e Svsteim Bubble Soft Bunker Jiamn Caltna CDJ Cfntec 
CfiriwrCNA Insurance CPT CRT Group CTm Cuh>c< >mp Cullinet S^ruaroCXICafeleshareCaihr.tk 

RaihrayG_ 

Cfta Coming lintel Cipher i 
CV '* •- 

puta 
Sy • 


'yam C neept TednM^ti 
co-'.ry Cornu ! |Vi cbm Con m Cr 
Life Iivuvancr Cuhioitn|v GiUinet 
Cancral ;w. Tran.n Dual# 
Dkl/McOiM Hd DRS Dn 
Resources DkraMrattt DsmumH I 
D» 

Di 

Dt 

Eli 

Ex 

§ 

Gi 

M 


M 

In 

ft 

Jaj 
La : 
Lccu 

M 


(Current S_ . 
ufe-i! iXrl.* 
:v«t*« Guo, 


M 

Men' 
M k r . 
M. : 

M , 


This is the city saved by the 
Atron bugbusters. Your city. 

Full of wizards, with hundreds 
of millions of dollars invested 
in wringing every ounce of 
intelligence and performance 
out of your PC. It used to be 
plagued with the toughest 
software bugs known to man¬ 
kind. 

PLAGUES OF 
BIBLICAL PROPORTIONS 

The first and most difficult 
plague was impossible to trap 
with software debuggers. 

These were carnivorous bugs 
which randomly overwrote 
programs, data, even the 
debugger. Nastiest were the 
ones that slipped in once every 
few hours, or changed their 
behavior after each new com¬ 
pile. Forty days and forty 
nights of recompiling, trying 
something else , caused many 
a would-be resident of the city 
to run screaming into the wil¬ 
derness, never to be heard 
from again. 

Second came the plague of 
not knowing where the pro¬ 
gram was, or where it had 
recently been. This com¬ 
pounded the first plague: How 
could anyone know what 
caused the random memory 
overwrites? Add to this ran¬ 
dom interrupts and timing 
dependencies, and you begin 
to understand The Fear that 
gripped the city. 

Then came the last plague, 
which brought the wizards to 
their knees before they even 
started debugging. Their tow¬ 
ering programs consumed so 
much memory, there wasn’t enough room for their symbol table, let alone 
debugging software. Even if they could get past the first two plagues, this 
one killed their firstborn software. 

ENTER THE HARDWARE-ASSISTED SOFTWARE BUGBUSTERS 

The Atron solution came as a revelation: Monitor every memory 
reference and every instruction executed, by adding a hardware board to 
the AT or PC with an umbilical probe to the processor. 

The result? Wham! The PC PROBE™ and the AT PROBE™ saved 
civilization as we know it. The first plague was cured with PROBE’S 
hardware-assisted breakpoint traps on reading, writing, executing, input¬ 
ting and outputting. These could be done on single or ranges of addresses, 
and could include particular data values. All in real time. For a mere 
software debugger to attempt this, a 1-minute program would take 5 hours 
to execute. 


Diagnostic Retrieval Dialogic Dicomed Dictaphone 
■ 0>l ’ ay 


. miinau Miles ! I • : it, ry Mm : i| •. Mim.j 
lid Motorola Mouse Systi Muktcnra i : »lt| 

National Information System* National Instruments National R,- <• m i, t oun<:il National Software Testing Labs National Syst 
£VwAlt Development Center Nelson Analytical NertedSMtems-Nettai Systems Networt ( no 1 N . rm, iking 

otstems New Rmuv lorft Times New Yorff University Nexuff Informal um id 

N-m Iwcm Instrument System Northwestf-ra Mutual Lite Insurance Novell Nuveilu.- Numen,: • w 

system L Vt.ivi-n.m-, W iter Center Qfficetech OugearCdmpam L>!. . 

O.imicul (.)wiii||()n Lme Software Syttsmi Optia h t.)piis Systems iOracle Orchid Technology i\uns ('onung Fibre,:: ib 

ra.itn : Bell IC Support 1\. .nl Polvtron Pr,»ce*s Systems Pacific Management I\in.sophic >v stems Passktv Pathway Design (Vat Marwick 
& Mitchell Pegasus Software Penultimate Perkin Elmer Bitsoft frr*.nal Computer IVdijcrs Pfcnt Logic Systems Phamts PhiKrnix 
got rware Associates Phone 1 Photon Phyaix International PiG-Solt Pick System Pirney Bowes Phambic Systems Polaroid Polygun 
oalygon Ssiftware Buytcl Postech Priam priinavera Systems Prime Computer Pfiriceton Universiry Printer Systems Pro-Log Project 
bottware Prolan Promis Information System Protocal Computer Puritan Benne_tt Quadram Qumtar Quotrun Systems RCA Reuters 
Kacal Vadic Ramuda Inns Raytel Raytheon Company Reflectone Relational 1 ethnology Reliability Center Rcxhester Instrument 
bystems Rockwell International Rohm & Hats Rolm RoseSofi SAS Institute Sensory Servio Logic N-Dex Labs Singer Keartott Smuth 
Uta Prcxessing Softpro Space Labs Sperry Step Engineering Summa Four Sandra National Lib Santa Clara Systems Scanning 
Management Schlajje Electronics Sentry Systems Shaffsta II Shell Development Shell Oil Siemens Sierra On-Line Simplex Time 
Rtcorder Singular Solutions Small Computer Small Library Computing Softbridge Micro Systems Softcom Softlogic Solutions 
boftpro Softrak Systems Software Arts Software Construction Software Decisions Software Group Software Publishing Software 
Specialist Solution Technology Sony of America Sava Computing LTD Space Labs Sperry Spruce Technology Structure 
bystems Studio Software Summa Four Summitt Software Technology Sun Micro Systems Symantec Synamitcal 
Software Synex Sysgen Systems for Automatic Test Sytek Tandy TBL TCI Telesh TJ Controls Trane TRW Tandf 


IF YOU AREN’T AN ATRON 
CUSTOMER, ODDS ARE YOU 
WON’T BE MAKING 
THE TOP-TEN LIST. 

On any given week, at least 
nine of the top ten best-selling 
software packages on the Soft- 
Sel Hotlist come from Atron 
customers. 

Ever heard of Borland? 
“Without Atron,” says its 
president Philippe Kahn, 
“there wouldn’t be a Side- 
Kick™, Turbo Lightning™ 
would be light-years away, and 
Turbo Prolog™ wouldn’t be 
shipping today. ” 

Ever use a spreadsheet? 
From Enable™ to Paradox™, 
their bugs were busted by 
Atron products. 

Into DBMSs? Everyone 
from Ashton-Tate to Oracle 
owns at least one Atron bug- 
buster. 

If you use a product from 
one of the companies in The 
City , you owe life as you know 
it to Atron. Our guess is that 
99% of all PCs, XTs and ATs 
have at least one product 
debugged with Atron bug¬ 
busters. 

FREE 44-PAGE BUGBUSTING BIBLE COULD MAKE YOU 
A PROPHET, AND YOUR COMPANY A PROFIT. 

We’ve written a complete tutorial on state-of-the-art bugbusting. 
And it’s yours, free for the asking. Full of examples and illustra¬ 
tions, it will show you how the wizards work their magic. 

If you’re tired of suffering the wrath of program bugs, call Atron 
today. You could be busting bugs, and sales records, tomorrow. 


/^TuV K \ 


The second plague, not knowing from whence you came, was cured 
with PROBE’S real-time trace memory. The history of program execution 
is saved on-board, in real time. Once a hardware trap has occurred, 


THE BUGBUSTERS 

20665 Fourth Street • Saratoga, CA 95070 • 408/741-5900 


Copyright © 1986 by Atron Corp. PC PROBE™ and AT PROBE™ Atron. The other fine companies mentioned throughout this advertisement own numerous trademarks. 


Adv. by TRBA. 


CIRCLE NO. 203 ON READER SERVICE CARD 






DIRECTIONS 


WILL FASTIE 


Perfomiance Metrics 

Measuring computer performance is a tricky business, 
and benchmarks can be very misleading. 



S ince the day that Peter Norton intro¬ 
duced his now-famous and ubiqui¬ 
tous system information utility, SI, we 
have all been swept away by a passion 
for quantifying the performance of the 
computers on our desks. Our compul¬ 
sions may be well-founded. Justifying 
the purchase of advancing technology, 
is often difficult, especially in the face 
of plummeting PC prices; the raw per¬ 
formance of the latest model can be a 
significant selling point. 

Norton’s SI was a good measure at 
the time it was introduced, but the 
hardware technology has moved well 
beyond what SI is capable of measur¬ 
ing. In fact, it disturbs me that SI con¬ 
tinues to be so frequendy used, espe¬ 
cially by hardware vendors, because it 
can actually be quite misleading. If the 
problem were simply measuring 8088 
processors that were getting faster and 
faster, SI would serve perfecdy. The fact 
of the matter is that today’s machines 
might be equipped with any member of 
Intel’s 86-family of processor, from 8088 
to 80386; a numeric coprocessor; mem¬ 
ory capable of operating with zero wait 
states, or just plain faster memory; dif¬ 
ferent (from the PC) memory organiza¬ 
tion; a cache memory system; a higher- 
bandwidth disk-drive subsystem; a non- 
AT bus; or an intelligent display adapt¬ 
er. The machine might even have an ac¬ 
celerator product with some combina¬ 
tion of the aforementioned features. All 
these features affect performance in 
ways that a simple program cannot 
hope to measure reliably. 

SI is not the only benchmark 
whose contemporary validity I question. 
Many benchmark programs attempt to 
mimic the operation of particular types 
of applications. For example, a bench¬ 
mark might attempt to measure com¬ 
pute-bound applications or disk-inten¬ 
sive applications or those with some 
mix of the two. Actually, benchmarks 
that measure processor- or disk-bound 
performance are usually valid. The 


problem is that most computer pro¬ 
grams have their own, unique finger¬ 
print where the use of system resources 
is concerned. No “standard” benchmark 
will ever properly illuminate the per¬ 
formance of unique programs. 

To avoid this problem, another 
type of benchmark measures the per¬ 
formance of a specific program so that 
its operation may be compared on dif¬ 
ferent computers. The most common is 
the “typical” Lotus 1-2-3 spreadsheet. 
This might seem to be a reliable metric 
because it does indicate how well the 
machine will fare as a 1-2-3 engine; PC 
Tech Journal uses metrics of this type 
to measure language compiler perfor¬ 
mance. However, such tests shed little 
or no light on the raw performance of 
the underlying hardware—the very 
thing we want to measure in our re¬ 
views of 80286 and 80386 machines. In 
fact, this type of benchmark usually 
masks the performance capabilities of 
advanced hardware because most pro¬ 
grams such as 1-2-3 or compilers are 
written for the lowest common denomi¬ 
nator—the 8088—and, therefore, they 
may not show an 80386-based machine 
in its best light even if the observed 
performance is superior. 

Worse, programs written for prior 
architectures sometimes suffer on the 
newer machines because they exploit 


the dark recesses of the older ma¬ 
chine’s capability; on the newer archi¬ 
tecture, some of these “features” be¬ 
come suboptimal. Once again, typical 
benchmarks usually fail to identify such 
conditions and any performance degra¬ 
dation becomes invisible if the test 
computer is faster in other ways. 

NEW, IMPROVED! 

PC Tech Journal has long recognized 
this problem. That is why we have 
taken a different approach in construct¬ 
ing the compatibility and performance 
metrics that we update in this month’s 
issue (“Updating the Evaluation Suite,” 
Ted Forgeron, Paul Pierce, and Steven 
Armbrust, p. 70). Our approach is diffi¬ 
cult to program, but easy to describe. 
Rather than taking a single measure¬ 
ment, or reducing a set of observed 
measurements to a single number, 
Forgeron, Pierce, and Armbrust have 
produced an Evaluation Suite that meas¬ 
ures the most important contributors to 
performance and reports the results in¬ 
dividually. We thus leave the final con¬ 
clusions to you, because only you can 
know the specific criteria that bear 
upon your particular situation and 
therefore understand which perfor¬ 
mance issues are germane. 

We are going to stop referring to 
the Evaluation Suite as a set of bench- 


MARCH1987 


9 


ILLUSTRATION • MACIEK ALBRECHT 



DIRECTIONS 


marks. The term benchmark implies 
that the answer is somehow absolute 
and final. I prefer the term metric , be¬ 
cause we are providing a set of tools 
that can be used for taking measure¬ 
ments. We consider those measure¬ 
ments excellent in each individual cate¬ 
gory, but we make no judgment about 
the performance of the system as a 
whole because, again, we cannot know 
the fingerprint. 

Our metrics are good, perhaps the 
best currently available to measure AT- 
compatible computers. The improve¬ 
ments embodied in the updated code 
render the suite even more useful than 
before, although some of the changes 
are somewhat subtle. 

The most significant change is to 
ATPERF, which now identifies the pro¬ 
cessor (8088, 8086, 80188, 80186, 80286, 
or 80386) and selects appropriate meas¬ 
urement techniques for each processor 
type. This means that the suite can be 
run on any PC and should deliver use¬ 
ful information. Alas, certain measure¬ 
ments cannot be taken on all processor 
types; in those cases, ATPERF simply 
does not report a result. One obvious 
change to the program is the processor- 


specific code; this was the only way to 
make valid measurements because of 
the architectural difference in the pro¬ 
cessors. ATPERF also has been extended 
to handle zero-wait-state memory, a fea¬ 
ture that is becoming more and more 
common as hardware vendors attempt 
to make memory system performance 
match the rising processor speeds and 
as the price of faster DRAM chips drops. 

READ THE LABEL! 

Even though the PC Tech Journal com¬ 
patibility and performance tests do not 
make judgments or report general in¬ 
dices of performance, each measure¬ 
ment must be understood. An anecdote 
illustrates the point. 

A number of firms use our Evalua¬ 
tion Suite to demonstrate their AT-com- 
patible computers. One demonstrator at 
Fall Comdex was showing the difference 
in performance between his firm’s ma¬ 
chine and the standard AT. In almost 
every category, his machine outper¬ 
formed the AT: However, ATPERF re¬ 
ported that his machine inserted more 
wait states for graphics board memory 
accesses than the AT, and he was apo¬ 
logizing to his audience for this, saying 


that the development team was “look¬ 
ing into the problem.” 

Of course, there was no problem 
at all. In each machine the graphics 
board was the same and it , not the pro¬ 
cessor, was constraining the operation. 
The graphics board required a fixed 
amount of realtime to perform its task; 
in the demonstrator’s faster machine, 
this translated into more wait states. 

Had the demonstrator fully understood 
the meaning of the metric, he could 
have avoided the apologies and pointed 
to yet another indicator of higher per¬ 
formance. Indeed, I explained the 
meaning, and he changed his pitch. 

Understanding each measurement 
is what allowed us to discover an anom¬ 
aly in the measurements of the Compaq 
Deskpro 386. When we ran the pro¬ 
gram, the times for ROM reads seemed 
far too high. On closer inspection, it 
was discovered that the technique used 
to determine ROM timings (more fully 
described in the Deskpro 386 review 
on page 48) were fooled by Compaq’s 
memory organization and the fact that 
the BIOS is not actually in ROM at the 
time the measurement is taken. We dis¬ 
covered this problem late in the publi¬ 
cation cycle; the article and tables are 
updated to reflect proper timings, but 
our published code for ATPERF does 
not reflect a method for overcoming 
this particular problem. 

This is not an 80386-specific prob¬ 
lem. The metric is accurate for every 
machine we have tested except for the 
Deskpro 386. ATPERF provides accurate 
measurements on ALR’s Access 386 ma¬ 
chine, for example. The Compaq expe¬ 
rience points out that even our metrics, 
good as they are, can be fooled by the 
implementation of techniques designed 
to improve memory performance. 
ATPERF’s first black eye was the zero- 
wait-state memory of IBM’s XT-286; the 
Deskpro 386’s static column RAM is the 
second. In the future, cache systems 
and interleaving will undoubtedly cause 
similar difficulties. We also are con¬ 
cerned about the hybrid nature of sys¬ 
tems with accelerator products; will our 
tests be valid for an AT with Intel’s In- 
Board 386/AT installed? 

The complexity of design and the 
variety of systems may prevent a gen¬ 
eral-purpose utility from being written. 
We hope this is not the case and are 
working to give ATPERF the ability to 
handle these new situations. However, 
special metrics may be needed for spe¬ 
cial cases, such as the Deskpro 386 and 
InBoard 386. If so, we will try to pro¬ 
vide them. I "imnim tSI 


CALL FOR AUTHORS 

As always, we know that among our 
body of readers are many potential 
authors for PC Tech Journal. I would 
like to encourage you to get in touch 
with us if you are interested in writing* 
for our magazine. 

Looking forward in time, we need 
additional authors who can write on 
the following topics: 

• Artificial intelligence techniques 

• Expert systems development 

• Data management 

• Local area networks 

• PC-to-mainframe connections 

• PC-to-minicomputer connections 

• Programming techniques 

• Operating systems 

If you would like to be considered for 
a writing assignment for PC Tech Jour¬ 
nal , please send a brief resume out¬ 
lining your education, experience, and 
areas of knowledge to: 

Marjory Spraycar, Managing Editor 
PC Tech Journal, Suite 800 
10480 Little Patuxent Parkway 
Columbia, MD 21044 
We will send you our authors’ guide 
in return. A technical editor will con¬ 
tact you when we need articles related 
to your areas of expertise. 





Your suggestions for articles are 
also welcome. Our normal process for 
the development of feature articles in¬ 
volves two stages. We first review a 
proposal, consisting of an abstract and 
outline, and then request a first draft. 
Other material, such as Tech Note¬ 
books and Programming Practices, can 
be submitted in completed form. 

We are looking forward to work¬ 
ing with you. 

—WF 


10 


PC TECH JOURNAL 















C Programmers! 

dbj/lSTA": high-speed Database 
written exclusively for C 
NOW offers SQL-based Query 

>_VISTA™has proved to be an all-round high performer in terms of fast execution.. 


John Adelus, Hewlett-Packard LtdJOJfice Productivity Division 


I I igh-speed data retrieval and access... 
just two benefits of using RAIMA’S network 
model DBMS, db_VISTA. Combine these 
benefits with those of C—speed, 
portability, efficiency, and you begin to 

understand db_VISTA’s real measure... 

performance. 

db_QUERY“: new simplicity 
retains performance! 

db_QUERY, our new C-linkable, SQL- 
based, ad-hoc query and report writing 
facility.. .provides a simple, relational view 
of db_ VISTA’s complex network database. 
No longer will you give up performance for 

simplicity ... combine db_QUERY with 

db_VISTA ... you have both! 

Independent Benchmark proves 
High-Speed model 2.76 times faster 

An independent developer bench- 
marked db_VISTA against a leading 
competitor. Eleven key retrieval tests were 
executed with sequentially and randomly 
created key files. 

♦Result of 11 Key Retrieval Tfests 

db_VISTA :671.24 seconds 

Leading Competitor :1,856.43 seconds 

db_VISTA’s high-speed network database 
model lets you precisely define relation¬ 
ships to minimize redundant data. Only 
those functions necessary for operation are 
incorporated into the run-time program. 

Application Portability 
Complete Source Code 

For maximum application portability, 

every line of db_VISTA’s code is written in 

C and complete source code is available. 
db__VISTA operates on most popular 
computers and operating systems. So 
whether you write applications for micros, 
minis, or mainframes.. .db_VISTA is for 
you. 

How db_VISTA works... 

Design your database and compile your 
schema file with the database definition 
language processor. Develop application 
programs, making calls to db_VISTA’s C 
functions. Edit and review your database 
using the Interactive Database Access 
utility. Compile and link your C program 
with the db_VISTA run-time library, and 
your application is ready to run. 

Multi-user and LAN capability 

Information often needs to be shared. 
db_VISTA has multi-user capability and 
supports simultaneous users in either 
multi-tasking or local area networking 
environments, allowing the same C appli¬ 
cations to run under UNIX, MS-DOS, and 
VAX VMS. 


Royalty-Free Run-Time 

Whether you’re developing applications 
for a few customers, or for thousands, the 
price of db_VISTA cr db_QUERY is the 
same. If you are currently paying royalties 
for a competitor’s database, consider 

switching to db_VISTA and say goodbye to 

royalties. 

FREE Technical Support 
For 60 days 

Raima’s software includes free telephone 
support and software updates for 60 days. 
Technical support personnel are available 
to answer questions about our software or 
yours. 

30-Day Money-Back Guarantee 

Try db__VISTA for 30 days and if not fully 
satisfied, return it for a full refund. 

Price Schedule 

db_VISTA db_QUERY 

□ Single-user $ 195 $ 195 

□ Single-user w/Source $ 495 $ 495 

□ Multi-user $ 495 $ 495 

□ Multi-user w/Source $ 990 $ 990 

NEW: 

□ VAX Multi-user $ 990 $ 990 

□ VAX Multi-user w/Source $1980 $1980 

Call Toll-Free Today! 

1 (800) db-RAIMA 

(that's 1-800-327-2462) 

—OR Call 1-206-828-4636 


Read what others say. >. 

“If you are looking for a sophisticated C 
programmer’s database, db_VISTA is it. It 
lets you easily build complex databases 
with many interconnected record types. 
Raima’s customer support and documen¬ 
tation is excellent. Source code availability 
and a royalty-free run-time is a big plus.’’ 

Dave Schmitt, President 
Lattice, Inc . 

“My team has developed a sophisticated 
PC-based electronic mail application for 
resale to HP customers. db_VISTA has 
proved to be an all-round high performer 
in terms of fast execution, flexibility and 
portability, and has undoubtedly saved us 
much time and development effort!’ 
John Adelus, Hewlett-Packard Ltd. 
Office Productivity Division 

“On the whole, I have found db__VISTA 
easy to use, very fast with a key find, and 
powerful enough for any DBMS use I can 
imagine on a microcomputer!’ 

Michael Wilson, Computer Language 


db_VISTA Version 2.2 

Database Record and File Sizes 

♦ Maximum record length limited only 
by accessible RAM 

♦ Maximum records per file is 16,777,215 

♦ No limit on number of records or set 
types 

♦ Maximum file size limited only by 
available disk storage 

♦ Maximum of255 index and data files 

Keys and Sets 

♦ Key length maximum 246 bytes 

♦ No limit on maximum number of key 
fields per record—any or all fields 
may be keys with the option of 
making each key unique or duplicate 

♦ No limit on maximum number of 
fields per record, sets per database, or 
sort fields per set 

♦ No limit on maximum number of 
member record types per set 

Operating System 
& Compiler Support 

♦ Operating systems: MS-DOS, PC- 
DOS, UNIX, XENIX, SCO XENIX, 
UNOS, ULTRIX, VMS 

♦ C compilers: Lattice, Microsoft, IBM, 
DeSmet, Aztec, Computer Innova¬ 
tions, XENIX and UNIX 

Features 

♦ Multi-user support allows flexibility 
to run on local area networks 

♦ File structure is based on the B-tree 
indexing method and the network 
database model 

♦ Run-time size, variable—will run in 
as little as 64K, recommended RAM 
size is 256K 

♦ Transaction processing assures 
multi-user database consistency 

♦ File locking support provides read 
and write locks on shared databases 

♦ SQL-based db_QUERY is linkable 

♦ File transfer utilities included for 
ASCII, dBASE optional 

♦ Royalty-free run-time distribution. 

♦ Source code available. 

Utilities 

♦ Database definition language processor 

♦ Interactive database access utility 

♦ Database consistency check utility 

♦ Database initialization utility 

♦ Multi-user file locks clear utility 

♦ Key file build utility 

♦ Data field alignment check utility 

♦ Database dictionary print utility 

♦ Key file dump utility 

♦ ASCII file import and export utility 


•The benchmark procedure was adapted from 
"Benchmarking Database Systems: A Systematic 
Approach” by Bitton. DeWitt and Turbyfill, 
December 1983. 


CORPORATION 


High-Speed Programming Tbols , 
Designed for Portability 


Call Toll-Free Today! 

1 (800) db-RAIMA 

(that’s 1-800-327-2462) 

3055-112th Avenue N.E. • Bellevue, WA 98004 USA • (206) 828-4636 Telex: 6503018237 MCI UW 


CIRCLE NO. 166 ON READER SERVICE CARD 


37PT 




COMPATIBLE DESIGN. 
INCOMPARABLE PERFORMANCE. 
INCREDIBLE VALUES. 


CHOOSC FROM THESE COMPLETE SYSTEMS. 


PC’S LIMITED TURBO PC 


TM 


Monochrome Systems 


• Intel 16-Bit 8088-2 System Unit running at 4.77 MHz and 8.0 MHz 

• 640K on Motherboard 

• AT™-Style Keyboard 

• 130 Watt Power Supply 

• Hercules Compatible Graphics Adapter with one Parallel Port 

• PC’s Limited Mono-IIA Flat Screen Monochrome Monitor with Tilt and Swivel Base 

with two 360K Floppy Disk Drives— S S 3 9 
with one 360K Floppy Disk Drive and one 20 Meg, 65 MS Hard Disk Drive— $1199 


EGAds! Color Systems 


» Intel 16-Bit 8088-2 System Unit running at 4.77 MHz and 8.0 MHz 
' 640K on Motherboard 
' AT™-Style Keyboard 
» 130 Watt Power Supply 
' PC’s Limited EGAds! Card 
1 PC’s Limited EGAds! Monitor 

with two 360K Floppy Disk Drives— S 12 2 9 

with one 360K Floppy Disk Drive and one 20 Meg, 65 MS Hard Disk Drive— S 1 3 89 


PC’s Limited 286* 


Monochrome Systems 


• Intel 80286 running at 8 MHz 

• 1024K on Motherboard 

• 1.2 Meg Floppy Disk Drive 

• Combined Floppy and Hard Disk Controller 

• AT™-Style Keyboard 

• 192 Watt Power Supply 

• Clock/Calendar with Battery Backup 

• Hercules Compatible Monochrome Graphics Card 

• 2 Serials and 2 Parallel Ports 

• PC’s Limited Mono-IIA Flat Screen Monochrome Monitor with Tilt and Swivel Base 

with 20 Meg, 65 MS Hard Disk Drive, Space Saving Chassis— S 1 T9 3 
with 30 Meg, 40 MS Hard Disk Drive, AT™ Standard Chassis- $ 2 19 5 


EGAds! Color Systems 

• Intel 80286 running at 8 MHz 

• 1024K on Motherboard 

• 1.2 Meg Floppy Disk Drive 

• Combined Floppy and Hard Disk Controller 

• AT™-Style Keyboard 

• 192 Watt Power Supply 

• Clock/Calendar with Battery Backup 

• PC’s Limited EGAds! Card 

• 2 Serials and 1 Parallel Ports 

• PC’s Limited EGAds! Monitor 


with 20 Meg, 65 MS Hard Disk Drive, Space Saving Chassis— $2193 
with 30 Meg, 40 MS Hard Disk Drive, AT™ Standard Chassis— $2393 


PC’s Limited 286 12 


Monochrome Systems 


EGAds! Color Systems 


• Intel 80286 running at 12 MHz 

• 1024K on Motherboard 

• 1.2 Megabyte Floppy Disk Drive 

• Combined Floppy and Hard Disk Controller 

• AT™-Style Keyboard 

• 192 Watt Power Supply 

• Clock/Calendar with Battery Backup 

• Hercules Compatible Monochrome Graphics Card 

• 2 Serials and 2 Parallel Ports 

• PC’s Limited Mono-IIA Flat Screen Monochrome Monitor with Tilt and Swivel Base 

• AT™-Standard Chassis 


• Intel 80286 running at 12 MHz 

• 1024K on Motherboard 

• 1.2 Megabyte Floppy Disk Drive 

• Combined Floppy and Hard Disk Controller 

• AT™-Style Keyboard 

• 192 Watt Power Supply 

• Clock/Calendar with Battery Backup 

• PC’s Limited EGAds! Card 

• 2 Serials and 1 Parallel Ports 

• PC’s Limited EGAds! Monitor 

• AT™-Standard Chassis 


with 30 Meg, 28 MS Hard Disk Drive— 
with 40 Meg, 28 MS Hard Disk Drive— 


$3095 

$3295 


with 30 Meg, 28 MS 
with 40 Meg, 28 MS 


Hard Disk Drive- 
Hard Disk Drive— 


$3495 

$3695 








30 Day 
Money Back 
Guarantee 


_ 


■ -.-. 


.... .. 


.. 


_ 


— 


(Tape backup optional) 


A GUARANTEE THAI STANDS UP. 

PC’s Limited has established itself as the leader in PC technology. And the guarantee and warranty programs we offer put us ahead of the 
pack, too. Here are our terms in plain English. 

30-Day Total Satisfaction Guarantee—Any item bought from PC’s Limited may be returned within 30 days from the date it was shipped for a 
full refund of your purchase price. Returned items must be as-new, not modified or damaged, with all warranty cards, manuals, and packaging 
intact. Returned items must be shipped prepaid and insured, and must bear a PC’s Limited Credit Return Authorization (CRA) on the shipping 
label. 

One Year Limited Warranty—PC’s Limited warrants the products it manufactures to be free from defects in materials and workmanship for one 
year following the date of shipment from PC’s Limited. During the one year warranty period, PC’s Limited will repair or replace, at its option, 
any defective products or parts at no additional charge, provided that the product is returned, shipping prepaid, to PC’s Limited. 

a PC'S LIMITED 

To buy PC's Limited computers, call us directly at 1 -800-426-5150. 

Calls inside Texas, 1 -800-252-8336. 

1611 Headway Circle, Building 3, Austin, Texas 78754 

Sales Calls from anywhere in the country, (512) 339-6962, Technical Support Calls, 1-800-624-9896 or PC’s Limited BBS (512) 339-4127 
Customer Service Calls, 1-800-624-9897 or MCI MAIL: PC’s Limited, Telex No. 9103808386 PC LTD FAX (512) 339-6721 


CIRCLE NO. 150 ON READER SERVICE CARD 

























"If you need a general-purpose PC programming editor, look no 
further . Recommended . ” - jerry poumeiie, Byte, 12/86 


WINDOWS 


Brief does do windows, and it does them your way! 

You can split the screen horizontally and vertically mul¬ 
tiple times, creating as many windows as will fit on the 
screen. Each window can show any part of any file. 

BRIEF’s flexible, easy to use windows make working 
with several files a breeze, 

“The main thing is that it [BRIEF] will do just about 
anything you want it to. It has windows— boy, does it 
ever have windows!... 

For the last few months... I’ve got a raft of mail urging 
me to try Brief. Now that Fve tried it I see why. ” 


The Program 
Editor with 
the BEST 
Features 


Program Editing 
YOUR Way 

A typical program editor 
requires you to adjust 
your style of programming 
to its particular require¬ 
ments - NOT SO WITH 
BRIEF. You can easily 
customize BRIEF to your 
way of doing things, 
making it a natural ex¬ 
tension of your mind. 

For example, you can 
create ANY command and 
assign it to ANY key 
even basic function keys 
such as cursor-control 
keys or the return key. 

The Experts Agree 

Reviewers at BYTE, 
1NFOWORLD, DATA 
BASED ADVISOR, and DR. 
DOBB’S JOURNAL all came 
to the same conclusion - 
BRIEF IS BEST! 

Further, of 20 top in¬ 
dustry experts who were 
given BRIEF to test, 15 
were so impressed they 
scrapped their existing 
editors!-- V- 


Since its introduction, 
BRIEF has been sweep¬ 
ing programmers off 
their feet. Why? 

Because BRIEF offers the 
features MOST ASKED 
FOR by professional 
programmers. In fact, 
BRIEF has just about 
every feature you’ve 
ever seen or imagined, 
including the ability to 
configure windows, 
keyboard assignments, 
and commands to 
YOUR preference. One 
reviewer (David Irwin, 
DATA BASED ADVISOR) 
put it most aptly, 
“(BRIEF).. .is quite 
simply the best code 
editor I have seen.” 


Jerry Poumeiie - Byte Magazine, Dec. 1986 


Every Feature You Can Imagine 

Compare these features • Unlimited File Size 
with your editor (or any -(even 2 Meg!) 
other for that matter). • Reconfigure Keyl 

• • Context Sensitive I 

• Full UNDO (N Times) „ c . . „ . 

... . ' • Search for regula 

• Edit Multiple Large Files expressions” 

• Compiler-specific . Mnemonic K 

support, like auto Assignments ' 

indent, syntax check, ® 

compile within BRIEF, * Horizontal Scrolling 

and template editing • Comprehensive Err 

• Exit to DOS inside BRIEF Recovery 

• Uses all Available Memory • A Complete Compii 

• Tutorial Programmable and 

• Repeat Keystroke Readable Macro Lanj 

Sequences • EGA and Large Dis 

• 15 Minute Learning Time Support 

• Windows (Tiled and • Adjustable line lenj 

Pop-up) up to 512 

MONEY-BACK GUARANTEE 
Try BRIEF (S195) for 30 days - If not satisfied get a full refund 

TO ORDER CALL (800-821-2492) 


-Solution 
i) y stems T 


SOLUTION SYSTEMS, 335-P WASHINGTON ST., NORWELL, MA 02061, 617-659-1571 


BRIEF is a trademark of UnderWare 


CIRCLE NO. 130 ON READER SERVICE CARD 





LETTERS 




A Virtual 
Graphics Screen 


MYSTERIOUS CHARACTERS 

I have been using VSCREEN.PAS from 
your September 1986 issue (“A Virtual 
Graphics Screen," Richard Chandler and 
Gary Faulkner, p. 134), partly to learn 
something about Pascal. 

I am ordering a back issue of the 
November 1985 PC Tech Jownal for 
SURFACE.PAS (“The Painter’s Algo¬ 
rithm," Richard Chandler and Gary 
Faulkner, p. 181) to use with VSCREEN. 
In the meantime, I have some questions 
regarding this program. In the past, 
when I have raised the point of possi¬ 
ble typographical errors in printed list¬ 
ings, I have been assured that the list¬ 
ings are printed from actual computer 
print-outs of tested coding, and there¬ 
fore, are unlikely to contain typesetting 
errors. However, my Pascal compiler, 
Turbo 3.0, hangs up on a line on page 
145 of the article: 

for y : = to c do 

It seems that a number is missing from 
this line, and if I put one in, the com¬ 
piler proceeds, but I do not know what 
number should be there. 

Also, two end statements appear 
without semicolons. This is something I 
had not seen before; however, the com¬ 
piler complained when I added them, 
so 1 kept them out. 

I also was unfamiliar with your use 
of the up arrow character O that ap¬ 
peared in several places. Does this have 
a specific meaning in Pascal? 

Finally, in two places (on pages 
141 and 142), in a very similar context, 
a character appears to be smudged in 
my copy. This character appears after 
the less-than symbol (<) in the line 

gotoxy (14,18); 

write (’< : Begins or Ends line’); 

This is an unusually complex and valu¬ 
able program to be found in the public 
domain, and it is greatly appreciated. 

Samuel S. Starr 
Rose Valley, PA 


Thanks to Mr. Starr for pointing out 
several problems with the program, list¬ 
ing for VSCREEN.PAS. I hacl not noticed 
them before and one of them is crucial 
to running the program. The line that 
Mr. Stair mentions, 

for y : = to c do 
should instead read 
for y : = 0 to c do 

Turbo Pascal does not allow a semi¬ 
colon (;) to precede an else statement 
in the if. .then.. .else clause. This is the 
reason for the missing semicolon fol¬ 
lowing those end statements. 

In Pascal, the A (up arrow) charac¬ 
ter indicates a pointer variable (see 
chapter 15 in the Turbo Pascal man¬ 
ual). Because Turbo accommodates 
only a 64KB data segment, the virtual 
screen had to be stored in the heap, ne¬ 
cessitating the use of pointers. 

The characters that were not clear 
in the gotoxy (a,b) statemmts were 
part of screen directions for these proce¬ 
dures. We were trying to produce some¬ 
thing that looked like the symbol on the 
Enter key. We used the < (60), - (196), 
and 2(217) symbols for this. PC Tech 
Journal has changed the printer used for 
producing program listings and the 
software for font selection apparently 
was not completely bug-free when this 
listing was prmted, thus a strange char¬ 
acter (at) was introduced into the list¬ 
ing. An error similar to this one appears 
072 page 142 in the listing for proce¬ 
dure Write_to_Screen. The remainder 
of the line that begins 

gotoxy (10,12); 

should actually read as follows 

write(’PgUp/PgDn Scrolls Up or Down 
Screen’); 

We used the (172) character iiistead 
of writing one-fourth and wound up 
with a tilde (~) in the prmted listing. 

—Richard Chandler 


DOS DISSENT 

In his article “The Ascent of DOS” 
(October 1986, p. 92), Ted Mirecki 
misses the point about the problems 
with PC-DOS 3.2, which is, in fact, a 
radical departure from prior versions. 
One of the reasons PC-DOS computers 
are so popular is the ease of installation 
of most PC-DOS software, which de¬ 
pends on knowledgeable programmers 
controlling the environment in which 
their programs run. In version 3.2, IBM/ 
Microsoft took some of that control (the 
hardware stack size) away from the pro¬ 
grammer and gave it to the customer, 
who ends up calling the programmer to 
find out why he is getting stack over¬ 
flow errors, and invariably blames the 
programmer for the problem. And yet, 
for all this trouble, version 3.2 offers no 
operational advantage over 31. Software 
companies should be outraged at IBM 
for causing such headaches, not to men¬ 
tion the telephone bills, and demand 
that stack management be returned to 
the control of the programmer. 

James L. Larsen 
Computer Consultants 
Salt Lake City \ UT 

As PC-DOS matures and becomes more 
of a professional business-oriented oper- 
atmg system, it is inevitable that some 
measure of control is lost. Evei 2 in the 
current state of DOS, with ever moi'e 
complex interactions between resident 
prograins and a network environment, 
it is becoming less practical to leave vys- 
tem stack management within applica¬ 
tion programs. Whe ?2 a program is writ¬ 
ten, it is impossible to foresee its stack 
requirements under all of the possible 
conditions it may encounter. When and 
if an application fails, it is certainly 
simpler to tell use?s to 7nodify> a 
CONFIG.SYS file than to distribute re¬ 
compiled versions of a ?2 application. 

It might be aigued that taking 
stack management away from the pi~o- 
grammer is not absolutely necessary / in 


MARCH 1987 


15 




































LETTERS 


DOS 3 2, but we might as well get used 
to proper programming practices as 
soon as possible. The separation of 
memory, especially stack space, for sys¬ 
tem and application uses is the defining 
characteristic of protected-mode opera¬ 
tion. Developers of software for upcom¬ 
ing protected-mode multitasking operat¬ 
ing systems will have no choice but to 
relinquish some of the control they> here¬ 
tofore exercised over memory manage¬ 
ment. Such is the price of progress, but 
the payoff will be more powerful appli¬ 


cations, and even more popularity for 
the next generation of DOS systems. 

—Ted Mirecki 

WELL-DIRECTED 

After a brief inspection of the PC Tech 
Journal Directory , which includes the 
product guide, I can say that this issue 
alone is worth the yearly subscription. 

It is extremely valuable, well done, and 
very thoughtfully organized. 

Pavel Vladu 
Jersey’ City, NJ 


THE ATRON BUGBUSTERS 
BRING HARDWARE BREAKPOINTS 
TO MICROSOFT'S CODEVIEW 


You already have Microsoft’s 
CodeView™ And you’ve seen our 
ads for the Atron hardware-assisted 
software debuggers. Right? You 
know, the Atron Bugbustersl We 
make the debugging tools used by 
9 of the top 10 software developers 
in the PC market. Now, with our 
new MiniProbe™ shortcard, you 
can use your familiar watchpoints 
and tracepoints in real time. 
Without learning new debugging 
technology. 


device. This solves the most 
common debugging problem: Out- 
of-range pointers which overwrite 
the program code or data. Often, 
the overwrite is different after each 
new compile of the program. 

The MiniProbe can also set a 
hardware breakpoint over a range 
of memory locations, helping to 
trap uninitialized pointers. And 
MiniProbe has a crash-recovery 
switch box, which lets you regain 
control of a frozen system. 



Only $395 puts 
you into world- 
class debugging. 


With real-time watchpoints and 
tracepoints, a one-minute program 
will run in one minute. Not 50 
hours (the difference between 
software-only debuggers and 
hardware-assisted debuggers is a 
3000-to-1 increase in efficiency). 
And if the program bug you’re 
trying to find has anything to do 
with interrupt activity, it might 
never occur when you’re debugging 
with CodeView alone. 

But with the Atron MiniProbe, 
you can trap events like reading 
and writing to memory or an IO 


So now that you don't 
have to learn a new 
debugger, the only thing 
keeping you from 
debugging like the pros is 
$395. And our phone 
number: 408/741-5900. 

Call today. Bust bugs, and 
records, tomorrow. 

THE DEBUGGER COMRANY 

20665 Fourth Street • Saratoga, CA 95070 

TRBA 


© 1986 by Atron. MiniProbe 1 " Atron. CodeView™ Microsoft. Atron is a division of Northwest Instruments. 


CIRCLE NO. 249 ON READER SERVICE CARD 


BACK TO SCROLLER 

Strange things happen when I run 
SCROLLER.COM on my PC/AT. (See 
“Flicker-free Scrolling,” Tech Notebook 
67, Michael Abrash, September 1986, 
p. 43.) Basically, the machine hangs and 
requires a cold boot. I spent a lot of 
time entering the program and double¬ 
checking for my own typographical er¬ 
rors. I had zero errors and zero warn¬ 
ings with my IBM MASM 1.0. The linker 
gave the message “No stack segment,” a 
length of 00193H, a name CSEG, and a 
program load at 0000:0100. EXE2BIN 
gave no errors or messages. Could it be 
a problem with a typo in the article list¬ 
ing, or a conflict with another resident 
color routine I have, or perhaps it is 
with the DDIR.COM program (from PC 
Magazine) that I use? Is the program 
load address correct? 

I have an AT bumped to 8 MHz, a 
Hercules color graphics adapter, and I 
also load a Norton SA.COM color rou¬ 
tine in my AUTOEXEC.BAT hie with the 
ANSI.SYS installed in CONFIG.SYS. The 
machine boots just fine, the desired 
colors appear from the SA routine, and 
DDIR.COM works fine until I load 
SCROLLER.COM. Then the machine just 
hangs when I run DDIR.COM. 

Flicker is one problem I really 
have always wanted to resolve. It has al¬ 
ways seemed an annoying but simple 
bug that IBM should have addressed 
and solved before releasing the original 
PC and the CGA. This is why I really ap¬ 
preciated your SCROLLER.ASM program 
when it was published. Thank you for 
any suggestions you can provide. 

William M. Ewers, president 

American Progressive Life Insurance 
Nashville, 77V 

Here is one reason (and perhaps a sec¬ 
ond) why’ SCROLLER does not work well 
for Mr. Ewers. The reason his system 
hangs is that SCROLLER must be con¬ 
verted to a .COMfile with the command 

EXE2BIN SCROLLER.EXE SCROLLER.COM 

then SCROLLER.EXE must be deleted be¬ 
fore SCROLLER can be run. Mr. Ewers 
was running the .EXE file, which is par¬ 
tially overwritten by the next program 
run (in this case, Mr. Ewers happened to 
run DDIR next, but any program 
would have had the same effect). I am 
afraid that in the interests of saving 
space I neglected to spell out the correct 
use of EXE2BIN here. 

A possible reason why his screen 
still flickers after SCROLLER is loaded is 
that SCROLLER does not eliminate flick¬ 
er for the CGA, but only for dual-ported 


16 


PC TECH JOURNAL 



WINDOWS FOR DATA™ 

The first choice 
of professional 
C programmers 

“Windows for Data is the best 
programming tool Fve ever used. 

It’s the most flexible Fve seen. 

Whenever Fve wanted to do something, 

Fve been able to find a way” 

Steven Weiss, 

Stratford Systems 

Professionals choose our tools because 
they are designed, crafted, and supported, 
for professionals. Here at Vermont Creative 
Software, we understand that performance 
and pleasure in programming derive 
from more than a long list of functions. 

Windows for Data provides: 

PROFESSIONAL FLEXIBILITY: 

Our customers repeatedly tell us how 
they’ve used WFD in ways we never imagin¬ 
ed - but which we anticipated by designing 
WFD for unprecedented adaptability. Vir¬ 
tually every capability and feature can be 
modified to meet special needs. You will be 
amazed at what you can do with WFD. 

PROFESSIONAL PERFORMANCE: 

Screen output is crisp and fast. Windows, 
menus, and data-entry forms snap up and 
down from the screen. WFD is built upon 
and includes Windows for C, the win¬ 
dowing system rated #1 in speed and 
overall quality in PC Tech Journal (William 
Hunt, July 1985). 

PROFESSIONAL RELIABILITY: 

An unreliable tool is worse than no tool at 
all. VCS products are known in the industry 
for their exceptional reliability. Ask anyone 
who owns one. 

PROFESSIONAL DOCUMENTA¬ 
TION: Over 600 pages of documentation 
provide step-by-step explanations for each 
major application, a reference page for each 
function, listings of functions alphabetical¬ 
ly and by usage, and a fully cross-referenced 


index. Extensive tutorials and demonstra¬ 
tion programs assist learning. 

PROFESSIONAL TECHNICAL 
SUPPORT: The same expert program¬ 
mers that develop our products provide 
prompt, knowledgeable technical support. 

PROFESSIONAL PORTABILITY: 
High-performance versions of VCS 
products are available for XENIX, 
UNIX, and VMS, as well as DOS. No 
royalties. 


OUR CHALLENGE AND 
GUARANTEE 

If you have an application where no 
other tool can do the job, try Windows 
for Data. If it doesn’t help you solve 
your problem, RETURN FOR A FULL 
REFUND. YOU MUST BE SATISFIED. 

Ask for FREE DEMO DISKETTE 


Vermont 2iEimAve. 
Creative Richford, vt 05476 

Software 802-848-7738, 

Telex: 510-601-4160 VCSOFT 

Prices: PCDOS* $295; XENIX, VMS, UNIX Call. 
No royalties. Shipping $3.50. 

* PCDOS specify C compiler. 


WINDOWS FOR D/UA 

for DOS, UNIX, VMS... 

The complete windowing data entry, menu, 
and help system that does the hard job 
others can’t — we guarantee it! 

Pop-up data entry windows; field types for 
all C data types, plus decimals, dates, and 
times; auto conversion to and from strings 
for all field types; system and user supplied 
validation functions; range checking; re¬ 
quired, must-fill, and protected fields; free¬ 
form movement; multiple-choice field entry; 
scrollable sub-forms. Branch and nest win¬ 
dows, forms, and menus. 

Complete context-sentitive help system 
with pop-up windows and scrollable text. 

Pop-up, pull-down, scrollable, and Lotus- 
style menus. 

NEW FOR DEBUGGING: Exclusive 
VCS Error Traceback System auto¬ 
matically identifies the location and 
cause of program errors. Eliminates the 
need to code error checks on all function 
calls! VCS Memory Integrity Check¬ 
ing helps catch those hard-to-detect, 
memory-corruption errors. 

NEW FOR ERROR HANDLING: In¬ 
stall your own error handler to be called 
whenever a function detects an error. 

NEW FORM LAYOUT UTILITY sim¬ 
plifies form design. 



CIRCLE NO. 115 ON READER SERVICE CARD 



LETTERS 


CGA clones. This means that SCROLLER 
will not work if the Hercules card is not 
dual-ported. Mr. Ewers may have been 
misled by the title for this Tech Note¬ 
book , which originally was "Flicker-free 
Scrolling for CGA Clones. ” In addition, 
the introductory blurb should have 
stated that SCROLLER worked only with 
CGA clones. I apologize for any incon¬ 
venience this has caused. 

—Michael Abrash 

THE TERMINATOR 

In the November 1986 issue of PC Tech 
Journal , the article “Prolog Arrives” 
(Michael Covington and Andre Vellino, 
p. 52) gives the following predicate defi¬ 
nition that “counts the number of ele¬ 
ments in a list.. 

length([],0). 

length([HIT],N) 

length(T,M), 

N is M + 1 

and states that “if the terminating condi¬ 
tion were written after the recursive 
part, the program would not terminate.” 
This simply is not the case. This defini¬ 
tion can be found in Leon Sterling and 
Ehud Shapiro’s book The Art of Prolog 
(The MIT Press, 1986) on page 131. Ei¬ 
ther ordering of these rules will work 


for counting numbers in a list. The ter¬ 
minating condition is a goal such as 

length([],X) 

Such a goal will not unify with the head 
of the recursive rule, hence the recur¬ 
sive rule will not be used. The terminat¬ 
ing condition rule would then be tried 
and the process would halt. In fact, 
placing the recursive rule first is more 
efficient. The reason is this: consider 
taking the length of a list of size n. The 
recursive rule is going to be used n 
times, whereas the terminating rule is 
only ever used once. Hence, it makes 
more sense to put the recursive rule 
first, saving the interpreter from trying 
the terminating rule n times. Perhaps 
the authors have in mind that if the re¬ 
cursive definition is placed first, then 
the definition is not suitable for other 
than the stated purpose—that is, count¬ 
ing the number of elements in a list, so 
that, for example, a call such as 

length(X,2) 

in which length is asked to generate a 
list of length 2, will indeed not termi¬ 
nate as desired. 

Richard Denneys 
Schlumberger Well Services 
Austin, TX 


Mr. Denney's remarks are correct. Pro¬ 
grammers should note, however, that 
while it is true, in general, that the or¬ 
der of clauses in a Prolog predicate is 
important, it does not matter in this 
particular case. This is because when 
the call to length([],M) attempts to 
bind [J to [HIT], it will fail and try 
another clause (the program thus will 
not go into an infinite loop). 

A better example to illustrate the 
significance of ordering clauses is an 
alternative definition of length in which 
the terminating condition is slightly dif¬ 
ferent and where cut controls the flow 
of execution. The program 

length 1([X],1). 
length 1([HIT],N) 

length 1(T,M), 

N is M -I- 1. 

will terminate successfully; however, the 
following program construction: 

length2([HIT],N) 

length2(T,M), 

N is M + 1. 
length2([X],l). 

will fail to terminate. 

—Andre Vellino 




Nothing Should 
Come Between 
Mainframe Mag Tapes 
and Your dBASE or Lotus 
Except 


Telebyte Tape Drives 


TDX Mag 9-track 1/2" Tape Systems from 
Telebyte provide faster, error-free download¬ 
ing of mainframe data into your PC. You con¬ 
trol the start-stop tape drive either from the 
keyboard or with Telebyte’s exclusive Data- 
verter software for faster file transfer — the 
equivalent of a 720,000 bit/second datalink. 

Telebyte TDX tape drives are available at 
either 45 or 75 ips, feature dual density 
(800/1600 bpi) storage and back up process¬ 
ed files at 2 MB/minute (up to 10 times faster 
than other 9-track drive systems) as a bonus. 




Enter data into dBASE® and Lotus® with no 
user programming. You do it in two easy steps 
because Telebyte’s exclusive Dataverter runs 
under both DOS 2.0 and Xenix? Dataverter 
will automatically convert packed, zoned and 
unsigned decimal field files, as well as labeled 
tapes, from EBCDIC to ASCII. The tape 
system is also supported by software lan¬ 
guages in your PC, including C, BASIC, 

Fortran, Cobol, etc. 

Only Telebyte offers such mainframe stand¬ 
ards of reliability and IBM-compatible tape drive 
quality for so little money. 


TELi 

TECHNOLOGY, INC . 

Telebyte Technology, Inc. • 270 E. Pulaski Road • Greenlawn NY 11740 


GSA Contract Number GS00K86AGS5301 

1 - 800 - 835-3298 

(516) 423-3232 


dBASE 1 " is a registered trademark of Ashton-Tate, Inc.; Lotus' 1 " is a registered trademark of Lotus Development Corporation; IBM " 1 is a registered trademark of 
International Business Machine Corporation; Xenix"* is a registered trademark of Microsoft. 

CIRCLE NO. 155 ON READER SERVICE CARD 


18 


PC TECH JOURNAL 















NEW! FROM 
BLAISE 
COMPUTING 


C 


Today’s programmers 
need more than yes¬ 
terday’s tools. Re¬ 
quirements such as 
removable windows 
and “sidekickable” 
pop-up utilities 
are changing 
the face of pro¬ 
gram design. 

You need to fil¬ 
ter interrupts so 
that other resi¬ 
dent programs 
still work. You 
need the ability to switch between 
multiple display pages and monitors. 
Today’s technical demands are almost 
endless, but C TOOLS PLUS gives you 
what you need. 

SOLID LIBRARY SUPPORT 

Blaise Computing offers you solid li¬ 
brary support that can meet all your 
demands and more. C TOOLS PLUS 
embodies the full spectrum of general- 
purpose utility functions that are criti¬ 
cal to today’s applications. 

Here's just pa rt of the PL US 
in C TOOLS PLUS: 

♦ C TOOLS and C TOOLS 2 compatibil¬ 
ity—two packages that receive rave 
reviews for quality, organization, usa¬ 
bility and documentation. 

♦ FULL SOURCE CODE 


C Tools Plus 


For The Programmer 
Whose Alphabet 
Begins & Ends 
With “C 




♦ WINDOWS that are stackable, re¬ 
movable, that support word wrap and 
that can accept user input. 

♦ INTERRUPT SERVICE ROUTINE 
support for truly flexible, robust and 
polite resident applications. 

♦ MULTIPLE monitor and display 
support, including EGA 43-line mode. 

♦ FAST DIRECT VIDEO ACCESS for 
efficiency that will not constrain good 
program design. 

♦ DOCUMENTATION, TECHNICAL 

SUPPORT and attention _ 

to detail that have distin¬ 
guished Blaise Computing 
products over the years. 

C TOOLS PLUS supports 
the Microsoft (and IBM) 

3.00 and Lattice 3.00 C 
compilers and is just 

$175.00. 


Also Available Are: 

C VIEW MANAGER — 
A kit for building data 
entry screens and menus. 
Begin by designing on¬ 
screen what the operator 
will see; call upon our 
library functions from 
your program to display 
the screens and retrieve 
the data. Just $275, in¬ 
cluding all library 
source code. 
CASYNCH MAN¬ 
AGER — provides 
the crucial core 
of hardware in¬ 
terrupt support 
needed to build 
applications that 
communicate. It 
also includes the ‘ 'XMODEM” file-transfer 
protocol and support for Hayes-compatible 
modems. All source code is included for $175. 
C TOOLS & C TOOLS 2 — an indispensable 
combination still available at a low price of 
$175, including all source code. See re¬ 
view in PC Tech Journal, 6/85. 

BLAISE COMPUTING INC. 

2560 Ninth Street. Suite 316 Berkeley. CA 94710 (415)540-5441 

ORDER TOLL-FREE 800-227-8087! 

CA residents call (415) 540-5441 

-for 







orders a< 

Marne 
, S hippingA ddreSS '- 
'. Citr- 


VIS A or 



NIC#'- 


CIRCLE NO. 104 ON READER SERVICE CARD 






































LETTERS 


At last! - Fast , On-screen 

FLOWCHARTS 


Finally! An on-screen flowchart pro'c- 
essor that knows about flowcharts - not 
just another “screen draw” program that 
makes you do most of the work. 

Interactive EasyFlow is a powerful 
full-screen graphics program dedicated 
to flowcharts and organization charts. 
With this program you can quickly com¬ 
pose charts on the screen. More im¬ 
portant, you can easily modify charts so 
they are always up to date. 

Features: • Text is automatically 
centered, character by character, within 
shapes as you type it • Text formatting 
controls allow you to over-ride the auto¬ 
matic formating where desired • Lines 
are created by specifying the starting 
and ending points - the program auto¬ 
matically generates the route • Cut and 
paste facility allows arbitrary chart 
fragments to be moved, copied rotated, 
reflected or sent to/from disk • Shape 
insert-delete and row/column insert- 
delete • Charts can be up to 417 
characters wide by 225 lines high. 
Charts too wide for the printer are auto¬ 
matically printed in strips. • Charts can 
be larger than the screen - the window 
into the chart scrolls both horizontally 
and vertically as necessary • Works 
with many popular matrix printers in¬ 
cluding Epson, IBM graphics printer and 
compatibles. Full support for HP 
LaserJet and LaserJet Plus. Works with 


HavenTree Software Limited 
P.O. Box 1093-N 

Thousand Island Park, NY 13692 
Information: (613)544-6035 ext 48 


HP 7475A (& compatible) plotters. Can 
be used with ANY printer when non¬ 
graphic (character) output is acceptable 
• All standard flowcharting shapes in¬ 
cluded • Most shapes supplied in large, 
medium and small sizes • Extensive 
manual (100+ pages) includes many 
examples • Context sensitive “help” 
facility provides immediate assistance at 
any time • Any number of titles can be 
placed on a chart • Commentary text 
blocks can be placed anywhere in the 
chart • Fast: written in assembly lan¬ 
guage • Plus many more features than 
we can mention here 

Requires at least 320K memory, DOS-2 
or higher and an IBM or Hercules com¬ 
patible graphics card. On EGA, full 
640x350 resolution is used. 

Order direct for only $149.95 + $2.00 
S&H (USA/Canada), $10.00 (foreign). 
Payment by MO, check, VISA, 
MasterCard, COD or Company PO. 
Rush orders accepted ($15.00 S&H; 
USA/Canada only). Rush orders re¬ 
ceived by noon will be delivered the next 
business day (to most locations). 

Order Desk: 1 -800-267-0668 

The sample screen display shown below is typical of 
what you see while editing a chart. Other screen dis¬ 
plays are provided for entering titles, changing 
options, getting “help” and so on. 


SHAPE CURSOR shows where you are in 
the chart. Cursor keys move it around; chart 
window scrolls if you run off the edge of the 
window. 


THE ENGINE STALLED 

I would like to apologize to those who 
had the interest to call or write for a 
software product I had developed, the 
BASIC engine, which has been adver¬ 
tised in the Tech Book section of PC 
Tech Journal for the last few issues. I 
will not be able to direcdy market and 
support this product from now on and I 
will not be in a position to answer re¬ 
quests. I am sorry that I was unable to 
cancel the scheduled advertising in tinje 
to avert some calls. 

I have version 2.0 of the BASIC 
engine almost ready to ship, but will 
place it on the market on a “shareware” 
basis. Look for it on bulletin boards and 
through public domain software mar¬ 
kets. Version 2.0 has a more enhanced 
editor that will allow screening for data 
types, case, and length, and allows for¬ 
matting data better; it has an index file 
access method; and it has an excellent 
user-definable report generator. 

Thank you again for your interest. 

David A Violette 
Praxis Software Engineering 
Green River ; WY 

A SUCCESSFUL EXPERIMENT 

Back in 1983, PC Tech Journal pub¬ 
lished an article by Richard M. Foard on 
XB, Experimental BASIC (“The Anatomy 
and Construction of XB,” July/August 
1983, p. 61). That article was the most 
valuable tool that my company and I 
used for more than 18 months. I com¬ 
piled your XB precompiler back then 
and made only minor alterations to in¬ 
crease its speed. It clocked in at about 
266 lines per minute and we have used 
it since that time to develop between 50 
and 100 XB-compiled programs with 
upwards of 2,000 lines each. 

Now times have changed and most 
of the new program development we 
do is in the C language. However, we. 
still have a lot of maintenance to do on 
what we have developed over the years, 
so we still use XB. Some people might 
believe that the new Microsoft Quick¬ 
BASIC compiler has reduced the useful¬ 
ness of XB, but that is not the case. The 
new compiler balloons the code so 
much, that we are sticking to our origi¬ 
nal IBM BASIC compiler. But even at 
266 lines per minute, when processing 
a 2,000-plus line program, XB seems 
slow. So I have recently rewritten XB in 
the C language. Our new version of XB 
clocks in at 666 lines per minute. 

Again thank you for the fine cover¬ 
age of Experimental BASIC. 

Douglas Hill 
Glendale, MO 


CIRCLE NO. 113 ON READER SERVICE CARD 


STATUS BAR (not to be 
confused with a wetJbar) tells 
you what Interactive EasyFlow 
is doing at all times. 


TEXT/MESSAGE 
WINDOW used to enter 
user text and to display 
messages from Interactive 
EasyFlow. 


CURRENT SHAPE 
WINDOW-shows the 
content of the current 
flowchart shape (the one 
under the SHAPE 
CURSOR) in complete 
detail. 


CHART WINDOW gives an overview of your chart; this 
example shows the “normal" view. “Close-up” view shows a 
smaller part of the chart in more detail. “Wide-angle” view 
shows a larger part of the chart at reduced size. 



20 


PC TECH JOURNAL 



MICROSOFT LANGUAGES NEWSLETTER VOL. 2, NO. 3 


News about the Microsoft Language Family 


Tracing through User Libraries with Microsoft® QuickBASIC 

Large programs are easier to maintain and debug if they are divided into smaller, more manageable parts. These 
units are called modules and may contain up to 64K of subprograms. You may separately compile subprograms 
with Microsoft QuickBASIC and build user libraries of these BASIC subprograms as well as assembly language 
routines. These user library routines can be used over and over again and are linked into your BASIC programs 
as needed. 

Debugging these user libraries is made very simple with the built-in debugger in Microsoft QuickBASIC. 
QuickBASICs built-in Debugging mode allows you to control the rate of program execution and the number 
of source lines displayed during execution. The Debugging mode is activated when the TRON statement is 
executed and is turned off with the TROFF statement. You can activate the Debugging mode for part or all of a 
source file. The Debugging mode has three “submodes”: Step, Trace and Animate. 

When you debug your BASIC programs that call subprograms contained in user libraries, Microsoft’s QuickBASIC 
Debugging mode lets you trace through the user library routines when you activate the Trace mode. This mode 
traces program execution one line at a time like the Step debugging mode but you may also trace program 
execution through subprograms and user-defined functions. If you call any assembly language routines in your 
main program, the Trace mode will not trace through each line of the assembly routine but will trace the entire 
routine as a whole. Because the built-in debugger allows you to display both the source code and the output 
screen, you may observe the program execute while seeing the output. 


Support Available for Microsoft Language Products 

Once you purchase your Microsoft language product, a number of support services are available to you. If you 
have any problems with your product, you may call the Microsoft Product Support Hotline at (206) 882-8089 for 
assistance. A Product Support Representative will try to help you find a solution. In addition, Microsoft provides 
technical assistance on some electronic bulletin boards, such as CompuServe? 

If you are a software developer who needs in-depth information, you may purchase Microsoft DIAL, an 
integrated set of on-line services. You can gain access to information on the DIAL bulletin board (which lists 
answers to frequently asked technical questions and provides information on new products, bug lists, seminars, 
and many other topics), and if the answer you are looking for is not on the bulletin board, you can electronically 
submit technical assistance requests (TARs) directly to Microsoft’s support organization. Contact Linda McCarty at 
(206) 882-8080 for an application form and additional information on DIAL. 

Filling out and sending in your product registration card is very important. It will allow you to receive notices 
about new versions and enhancements to your Microsoft product. The update notices let you know about the 
enhancements and instruct you on how you may receive the updated version. If you are in the market for a 
language product, you may receive useful information from this newsletter; you may also purchase a subscription 
to our Microsoft System Journal that contains technical articles on our languages and operating systems/environ¬ 
ments. Microsoft Consumer Response can help you by sending you data sheets and other information such as 
the Language Support Directory (for available third-party libraries that support Microsoft languages). 


For more information on the products and features 

discussed in the Newsletter, 

write to: Microsoft Languages Newsletter 

16011NE 36th Way, Box 97017, Redmond, WA 98073-9717. 

Or phone: 

(800) 426-9400. In Washington State and Alaska, 
call (206) 882-8088. In Canada, call (416) 673-7638. 

Microsoft is a registered trademark of Microsoft Corporation. CompuServe is a registered trademark of CompuServe, Inc. 


Latest DOS Versions: 


Microsoft C Compiler 

4.00 

Microsoft COBOL 

2.10 

Microsoft FORTRAN 

4.00 

Microsoft Macro Assembler 

4.00 

Microsoft Pascal 

3.32 

Microsoft QuickBASIC 

2.01 


Look for the Microsoft Languages Newsletter every month in this publication. 








MULTI 

USER 

BBS 

Off-the-shelf and custom systems for: 


★ Multi-User Teleconferencing 

★ Multi-User Electronic Mail 

★ Multi-User File Upload/Download 

★ Multi-User Order Entry 

★ Multi-User Games and Amusements 

★ Multi-User Database Lookup 

★ Multi-User Online Expert Systems 

★ Multi-User Catalog Scanning 

★ Multi-User Classified Advertising 

★ Multi-User Educational Services 



OWKO.IC 

mm, $BB**T£* STATUS -l» 

19:It IUI Vtt OWKL » 
iMCMT. tnmm status -n 

*9:1* Wl OMKD. It 

mqkt, cosunt snraim - 1 * 

89:1* OMKCLir 

mm, 6D6ME5 STATUS -II 
19:31 IMVSb mil CMCOLt 
CSDtTD SaOs 18M (Fill) 
89:22 nmm 11*18 CflCHi 
CIOITD Urbkfe 3UN (Mil) 


13:3$ ll/M/ff 
feeWI: Mb 
*»cc«u: 1151 
271 


What do you need for your Multi-User 


Bulletin Board System? 



Us 

Them 

16 modems on one card 

YES 

? 

Up to 64-user capability 

YES 

? 

Runs under MS-DOS V3.1 

YES 

7 

C source code available 

YES 

? 

Menu-oriented operation 

YES 

? 

Accounting w/audit-trail 

YES 

7 

Extensive SYSOP displays 

YES 

7 

Powerfail-protected data 

YES 

7 

"Midnite cleanup" option 

YES 

7 

1-year hardware warranty 

YES 

7 


We sell hardware and software for the 
IBM PC family and compatibles. Our 
product line is centered around the 
GALACTICOMM BREAKTHROUGH, a 
single-slot card with 16 independent 
modems on it. You will simply have a cable 
coming out the back of your machine, 
going straight into the jacks in the wall 
installed by the telephone company. No 
external hardware needed. 


Call our multi-user demo system with your 
modem, at (305) 922-3901. Then call (305) 
472-9560, voice, for more information. 
Why not call right now? 

(?) GALACTICOMM 

GALACTICOMM, Inc.. 11360 Tara Drive, Plantation. FL 33325 
CIRCLE NO. 199 ON READER SERVICE CARD 


22 


LETTERS 


MERGING TRAFFIC 

Peter G .Aitken’s interesting review of 
hard-disk cards for the PC in your Janu¬ 
ary 1987 issue (“Mass-Storage Mergers,” 
p. 76) contains an error in the two 
BASIC programs listed for verification 
of the ROM BIOS version. For the IBM 
PC, the program reads 

10 DEF SEG&HF000 

20 FOR X&HFFF5 TO &HFFFC 

30 PRINT CHRS(PEEK(X)); 

40 NEXT 

and for the Compaq Portable, the article 
lists the program as 

10 DEF SEG&HF000 

20 PRINT CHR$(PEEK( &HFFE6)); 

In both programs, line 10 should read 
instead as the following: 

10 DEF SEG = &HF000 

Running either program as listed by Mr. 
Aitken will result in a syntax error mes¬ 
sage in line 10. 

Guillermo Hakim 
New York, NY 

Thank you for your corrections to the 
BIOS check listing for the two machines. 
Line 20 in the IBM PC check should be 
changed as well, to read 

20 FOR X = &HFFF5 TO &HFFFC 

Please also note some other corrections 
to this articles table of benchmark re¬ 
sults (table 3, located across pages 84 
and 85). First, under Measured Data, 
the overall average for the AUTOTEST 
random 8-sector read (0.90 width) ac¬ 
tually should be 185.8 

Under the next section, Percentage 
of Average Performance, several clarifi¬ 
cations should be noted. First, the aver¬ 
age of random tasks for the Mountain 
Computer card should say 83. Next, the 
unit measure for the ATDISK effective 
transfer rate should read milliseconds/ 
KB (ms/KB)—designed so that a smaller 
number indicates a better' performance 
(consistent with the remainder of the ta¬ 
ble). Also, to correct a computational 
error, the actual results for this test can 
be obtained by dividing the figures 
printed by 1.09. 

Finally, the averages at the bottom 
of the table are computed as follows. 

The average for random tasks is ob¬ 
tained as an average of two items: (1) 
taking the average of random tasks in 
ATDISK, that is, the average seek time 
and the track-to-track seek time, and 
(2) the average of all eight random 
tests. The average of sequential tasks is 
obtained as an average of two items: 


(1) taking the average of sequential 
tasks in ATDISK, that is DOS file I/O 
and effective transfer rate, and (2) the 
average of sequential tests. The overall 
is an average of the average random 
and the average sequential results. Al¬ 
though the differences in the ATDISK ef¬ 
fective transfer rate results (mentioned 
above) affect the sequential tasks aver¬ 
age as well as the overall average, the 
conclusions that were drawn based on 
the results remain the same. 

—Peter G. Aitken 

ERRATA 

The board that appeared in photo 13 
(on page 62) of “RT PC: A Significant 
Departure” (Thomas V. Hoffmann, De¬ 
cember 1986, p. 56) is actually the RT 
Monochrome Display Adapter, not the 
RT Multiport Communications Adapter 
(MCA). The MCA is pictured below. 



In “Photo Plotting,” the sidebar to 
“End-to-End Design” (Richard Angell, 
December 1986, p. 155), the first sen¬ 
tence of the second paragraph should 
say “With the introduction of computer- 
aided design (CAD), handtaping is re-- 
placed by pen plotting.” I "iTTmim m 


COMMENT AT WILL 

All letters to the editor should be 
directed to Editor, PC Tech Journal , 
Suite 800, 10480 Little Patuxent Park¬ 
way, Columbia, MD 21044. Corre¬ 
spondence also can be submitted 
over MCI Mail to PCTECH. 

Although PC Tech Journal can¬ 
not publish every letter received, 
every attempt is made to answer as 
many as possible. Please keep letters 
brief and to the point, and include 
name, mailing address, and tele¬ 
phone number; when a letter is 
lengthy, a diskette is appreciated. 


PC TECH JOURNAL 



































Macro Assembler 

The quickest Bar none* 


Our Macro Assembler has long been the 
most complete package on the market. Now 
it’s also the fastest. Three times faster than 
before. And faster than anyone else. Period. 

Of course, it’s still the most powerful assem¬ 
bler on the market. It supports the standard 
8086/8087 opcodes. And the new 186/286/ 
287 instruction set. So you can make the 
most of the new machines. 

Debugging is quicker, too. Thanks to our 
interactive symbolic debugger, SYMDEB. 
Now you can refer to variables and source 
code instead of getting lost in hex dumps. 
And this debugger also works with Microsoft 
languages like C, FORTRAN and Pascal. So 
now you can set breakpoints and trace exe¬ 
cution-using source code for reference. 


not only thorough, they’re clearer than ever 
before. 

For quick development and assembly, the 
choice is obvious. Microsoft. There’s nobody 
faster. 


Microsoft® Macro Assembler Version 4.0 for MS-DOS® 
Macro Assembler 

♦ Fastest macro assembler for MS-DOS computers. 

♦Supports the 8086/8087/8088 and the 186/286/287. 

♦ Define macros. 

♦ Conditional assembly. 

♦ Optional case sensitivity for symbols. 

♦ 100% upward compatibility from earlier versions of both the 
Microsoft and IBM® Macro Assemblers. 

Interactive Symbolic Debug Utility 

♦ Source level debugger for programs written in Microsoft 
Macro Assembler, C Compiler, FORTRAN, and Pascal. 

♦ Screen swapping helps debug highly visual applications. 

♦ Set breakpoints on line numbers and symbols. 

♦ Single step to follow program execution. 

♦ Disassemble object code. 

♦ Display and modify values. 

♦ Full I/O redirection. 






-V .18 

18: 

11: 18 

12: 

13: 

DO 10 I : 1,8191 

FLACS(I) = .TRUE. 


W 91 I-1J191 

IF1.N0T. FLAGS(D) GO 10 91 


14: 

PRINE : I ♦ I U 


15: 288 

lb 

17: 

F0RNAK1X.I6) 

COUNI = COUNT ♦ 1 


K -- I ♦ PRINE 


-bp .14 V 

il 

PRINE • 


1AEF:0069 A16240 NOV AX,140621 

1AEF:006C 83C8 AN) AX,AX 

;BR8 

1AEF:006E 48 

INC AX 


1AEF:006F A36440 NOV 140641,AX 


16: 

COUNT r COUNT ♦ 1 


1AEF:0072 F7066048 INC UoM Ftp 140601 


17: 

K : I ♦ PRINE 


-?no‘ 4062 



0001 h 00000081 (1) V 



COUNT : COUNT ♦ 1 

J 


Cut your development time dramatically. Microsoft Macro Assemblers 
Symbolic Debug utility lets you debug your Macro Assembler programs, or 
debug your Microsoft C, FORTRAN or Pascal programs using your original 
source code or the resulting disassembly. For example, you can set break¬ 
points on line numbers and observe the contents of variables or expressions. 

SYMDEB is just part of our complete set 
of utilities. Tools that make programming as 
fast as it should be. There are the linker and 
library managers you’d expect. Plus a new 
version of MAKE, our maintenance utility, 
with improvements like macro expansions 
and inference rules. 

We’ve also revised the manuals. Our new 
Macro Assembler has a lot to offer, so we 
added more examples. Now our manuals are 


Microsoft® Macro Assembler Version 4.0 for MS-DOS® 

Macro Assembler 

♦ Fastest macro assembler for MS-DOS computers. 

♦Supports the 8086/8087/8088 and the 186/286/287. 

♦ Define macros. 

♦ Conditional assembly. 

♦ Optional case sensitivity for symbols. 

♦ 100% upward compatibility from earlier versions of both the 
Microsoft and IBM® Macro Assemblers. 

Interactive Symbolic Debug Utility 

♦ Source level debugger for programs written in Microsoft 
Macro Assembler, C Compiler, FORTRAN, and Pascal. 

♦ Screen swapping helps debug highly visual applications. 

♦ Set breakpoints on line numbers and symbols. 

♦ Single step to follow program execution. 

♦ Disassemble object code. 

♦ Display and modify values. 

♦ Full I/O redirection. 

Program Maintenance Utility 

♦ Rebuilds your applications after your source files have 
changed. 

♦ Similar to UND(™ MAKE utility. 

♦ Supports macro definitions and inference rules. 

Library Manager 

♦Create, organize and maintain your object module libraries 
created with Microsoft languages. 

♦Set page size from 16 to 32678, to create compact and 
granular libraries. 

Object Code Linker 

♦ Simple overlaying linker combines relocatable object 
modules created using Microsoft languages into a single 
program. 

♦ Load Map generation. 

♦ Specify from 1 to 1024 segments. 

Cross-Reference Utility 

♦ Creates a cross-reference listing of the definitions and 
locations of all symbols used in an assembly language 
program, which makes debugging programs easier. 

Microsoft EXE File Compression Utility 

♦ Packs EXE files for smaller size on disk and faster loading 
at execution time. 

Microsoft EXE File Header Utility 

♦ Display and modify EXE file header, allowing you to tune 
the stack size and initial memory allocation. 


For the name of your nearest Microsoft 
dealer call (800) 426-9400. In Washington 
State and Alaska, call (206) 882-8088. In 
Canada, call (416) 673-7638. 


Microsoft. 

The High Performance Software™ 

CIRCLE NO. 237 ON READER SERVICE CARD 
Microsoft and MS-DOS are registered trademarks and The High Performance Software is a 
trademark of Microsoft Corporation. IBM is a registered trademark of 
International Business Machines Corporation. UNIX is a trademark of AT&T Bell Laboratories. 





helps save time, money and cut frustrations. Compare, evaluate, and find products. 


RECENT DISCOVERY 


The Documentor - for dB ASE program 
flow chart, tree diagrams,. DBF documen¬ 
tation, variable/field concordance, 
hierarchy charts. Macros, searches, 


configure options._ MS $ 295 


Al-Expert System Dev t 


Experteach-Improved, samples PC $ 349 

EXSYS PC $ 339 

Insight 2 + - dB2, language MS $ 389 

Texas Instruments: 

PC Easy PC $ 439 

Personal Consultant Plus_ PC $2599 


Al-Lisp 


Microsoft MuLisp 85 MS S 179 


PC Scheme LISP - by TI. SCHEME has 
simple, “orthogonal” syntax. PC $ 85 

TransLISP-Good for learning MS $ 85 

TransLISP PLUS - 

Optional Unlimited Runtime $ 150 

PLUS for MSDOS $179 

Others: IQ LISP ($155), IQC LISP ($269) 


Al-Prolog 


APT - Active Prolog Tutor - build 
applications interactively PC $ 65 

ARITY Standard - full, 4 Meg 
Interpreter - debug, C, ASM PC $ 319 
COMPILER/Interpreter-EXE PC $ 699 
With Exp Sys, Screen - KIT PC $1129 
LPA MacProlog - Complete incremental 
compiler and an interpreter MAC $ 295 

LPA MicroProlog - intro MS $ 85 

LPA MicroProlog Prof. - full 
memory MS $ 339 

Prolog-86 - Learn Fast MS $ 89 

Prolog-86 Plus - Develop MS $ 229 

TURBO PROLOG by Borland PC $ 69 


Editors for Programming 


BRIEF Programmer’s Editor 

PC 


Call 

EM ACS by UniPress - Source: $929 

$ 

299 

Epsilon - like EMACS 

PC 

$ 

155 

Kedit - like XEDIT 

PC 

$ 

105 

Lattice Screen Editor 

MS 

$ 

109 

PC/VI - by Custom Software 

MS 

$ 

109 

Personal REXX - 

PC 

$ 

109 

PMATE - power, multitask 

PC 

$ 

109 

SPF/PC - fast, virtual memory 

PC 

$ 

139 

XTC - multitasking 

PC 

$ 

79 


FEATURES 


PolyBoost - Run 2 to 10 times 
faster with software accelerator. 

Speeds disk access, screen display, 
keyboard input. PC $ 69 

C Scape - capture Dan Bricklin’s, 

1 -2-3. Turbo screens & more, convert 
to C. Plus full screen generation 
package - tiled, pop-up windows with 
scrolling, validation. Source PC $179 

Note: All prices subject to change without notice. 

Mention this ad. Some prices are specials. Ask about 
COD and POs. Formats: 3" laptop now 
available, plus 200 others. UPS surface shipping 
add S3/item. 


National Accounts 

MIS, Engineering, and Research departments get 
special FREE consulting, product comparisons, 
reports, newsletters. Compare approaches to 
COBOL, C, AI. PURCHASING AGENTS - get 
help and special service finding products, negotiat¬ 
ing license agreements, with billing and more. 

Call 800-446-1185. 

Our Services: 

• Programmer’s Referral List • Dealers Inquire 

• Compare Products * Newsletter 

• Help find a Publisher • Rush Order 

• Evaluation Literature FREE • Over 700 products 

• BBS-7 PM to7 AM 617-826-4086 • National Accounts Center 


C Support-Systems 


Basic-C Library by C Source MS $139 
C Sharp - well supported. PC $600 

C ToolSet - DIFF, xref, source MS $ 95 
The HAMMER by OES Systems PC $149 
Lattice Text Utilities PC $ 89 

Multi-C - multitasking PC $149 

PC LINT-checker. Amiga $89, MS $107 
SECURITY LIB - add encrypt to MSC. 

C86 programs. Source $229 PC $115 
Quickshell - script compiler PC $349 


Fortran & Supporting 


50: More FORTRAN - math, source $ 99 
ACS Time Series $419 

Forlib + by Alpha - graph, comm. $ 59 
MACFortran by Microsoft $229 

MS Fortran link to C $209 

No Limit - Fortran Scientific $115 

R/M Fortran - enhanced “IBM Ftn” $389 
Scientific Subroutines - Matrix $139 


Multi Language Support 


BTRIEVE ISAM MS $199 

BTRIEVE/N - multiuser MS $469 

CODESIFTER - Profiler MS $ 99 

Dan Bricklin’s Demo Program PC $ 65 

HALO Graphics -115+ device 
interfaces, rich, printer. Specify 
language interface PC $209 

Informix - by RDS PC $639 

Informix 4GL - application 
builder PC $799 

Microsoft Windows Software 
Development Kit PC $329 

Opt Tech Sort - sort, merge MS $119 

PANEL - Xenix $539 MS $229 

Pfinish Performance Analyzer MS $249 

PLINK-86 - a program-independent 


overlay linker to 32 levels. MS $249 
PLINK-86 PLUS - incremental MS $369 
PolyLibrarian by Polytron MS $ 79 

PVCS Version Control MS $329 

Screen Sculptor-slick, thorough PC $ 99 


C Libraries-Communications 


Asynch by Blaise PC $135 

Greenleaf Comm Lib. PC $149 

Multi-Comm - add multitasking, use 
w/Multi-C PC $149 

Software Horizons pack 3 PC $ 119 


RECENT DISCOVERY 


r-tree - report generation for 
ctree. Multiple handling, fixed or 
variable length. Many built-in functions 
like Boolean, computational functions, 
string, date handling, numeric to 


string conversion. Layout control. 

Source in C. PC $249 

1 C Language-Compilers 

AZTEC C86 - Commercial 

PC 

$ 

499 

C86 by Cl - 8087, reliable 

MS 

$ 

299 

Datalight C - fast compile, good 




code, 4 models, Lattice compatible, 



Lib source. Dev’rs Kit 

PC 

$ 

77 

HOT C - new, intriguing 

PC 

$ 

85 

Lattice C - from Lattice 

MS 

$ 

289 

Mark Williams - w/debugger 

MS 

$ 

369 

Microsoft C 4.0 - CodeView 

MS 

$ 

279 

Wizard C - full, fast. 

MS 

$ 

359 


C Language-Interpreters 


C-terp by Gimpel - full K & R MS $ 229 
C Trainer by Catalytix PC $ 89 

INSTANT C - Source debug, 

Edit to Run-3 seconds, .OBJs MS $ 379 
Interactive C - interpreter, editor PC $ 225 
Introducing C-learn C quickly PC $ 105 
Run/C Professional - MS $ 179 

Run/C Lite MS $ 97 


C Libraries-General 


Blackstar C Function Library PC $ 79 

C Essentials by Essential PC $ 83 

C Food by Lattice-ask for source MS $ 99 
C Scientific Subroutines-Peerless MS $ 135 
C Tools Plus (1&2) - Blaise PC $ 135 
C Utilities by Essential - Comprehensive 
screen graphics, strings. Source. PC $ 137 
C Worthy Library MS $ 269 

Entelekon C Function Library PC $ 119 
Greenleaf Functions-portable, ASM $ 139 
PforCe by Phoenix - objects PC $ 229 


C Libraries-Files 


FILES: C Index by Trio - full B + 

Tree, vary length field, multi compiler 
/File is object only MS $ 89 

/Plus is full source MS $ 319 

CBTREE-Source, no royalties MS $ 99 
CTree by Faircom-no royalties MS $ 319 
dbQUERY-adLoc, SQL-based MS $ 159 
dbVISTA - full indexing, plus optional 
record types, pointers. Network. 

Object only - MS C, LAT, C86 $ 155 


Source - Single user MS $ 425 

Source - Multiuser MS $ 845 

dBASE Tools for C PC $ 65 

dbc Isam by Lattice MS $ 179 

dBx - translator MS $ 319 

w/source to library MS $ 499 


FEATURE 


Uniware Cross Development Tools - 

include 68000 C compiler. Development 
Package with compiler, assembler, link 
editor, and utilities. 17 cross assemblers 
for Intel, TI, Motorola, Zilog, etc. - 
relocatable, macros. MS Call 


We support MSDOS (not just compatibles), PCDOS, Xenix-86, CPM-80, Macintosh, Atari ST, and Amiga. 


CIRCLE NO. 162 ON READER SERVICE CARD 































provides complete information, advice, guarantees and every product for Microcomputer Programming. 


Special Features 


Finally . . . Easy Screen Handling for COBOL Saves Time, 
Adds Flexibility: Screenplay 

Menus, Help, and Data Entry Screens can be created (‘‘painted”) interac¬ 
tively. When you are satisfied Screenplay performs all screen handling for 
you in any of more than 9 compilers. 

Save valuable time by avoiding the tedious, time consuming process of 
writing screen handling source code. Screenplay’s easy-to-use panel painter 
allows you to create I/O panels, pop-up windows or menu panels. 

True screen handling flexibility is yours. Override default panel settings 
to design practically any type of screen imaginable — even change just 
about any panel characteristic at runtime . 

Prototype your draft screens before you write a single line of COBOL 
source code. In addition, you can link Screenplay by interrupt or directly 
to your application. And if your compiler doesn’t allow a direct link, use 
the dynamic load option for linking Screenplay to your application. 

You can assign practically any keyboard key to serve as a specific cursor 
function and define exactly which keys will return control to your applica¬ 
tion . Entirely reconfigure the keyboard for your program. 

Screenplay’s panel painting process is a one step approach. There’s no 
need to go through a separate process to establish fields on your I/O panel. 
What’s more, you can use any ASCII character in your Screenplay panels. 
You also have full control over character attributes such as foreground and 
background color, intensity, and blinking. 

Panels are stored in a compressed ASCII file save memory and disk space. 
Copy panels across and within files, rename, delete, test and print panel de¬ 
tails. Even print an image of the panel for your documentation. No royalties. 
Not copy-protected. Supports IBM, MS, Realia, Ryan-McFarland (includ¬ 
ing 8X) COBOL. 

201-895-4724 PCDOS List: $175 Ours: $155 


Multitasking, Windowing for C, Turbo Pascal, or dBASE or... 
in only 12K! 

SYNERGY Development Toolkit 

The highly efficient design of Synergy by Matrix gives you the benefits 
of powerful graphics, windows, pull-down menus, dialog boxes, sophisti¬ 
cated text and icon management, math support, multitasking, and SPEED, 
all for an incredibly small 12K RAM requirement. 

The Synergy Runtime provides character and graphics support for menus, 
windows, dialog boxes, and more, so you can write programs that work in 
either mode, with very reasonable, low runtime fees. 

Functions include: window management with capabilities like tile and 
overlap, variable size and placement, process management, to support mul¬ 
titasking and sub-process generation, menus, dialog, and icon management, 
graphics, text (including a variety of fonts and sizes), and console manage¬ 
ment. 

The Synergy Development Toolkit is a collection of sophisticated tools de¬ 
signed for software developers writing new applications using Synergy, or 
modifying existing applications to take fiill advantage of Synergy. Tools in¬ 
clude: graphics resource editor for creating and modifying icons and text 
fonts, graphics resource compiler to construct and manage resource data 
files, font compiler and manager, debugging tools, sample library, and 
more. 


Supports IBM or Microsoft Macro Assemblers, Turbo, IBM, and Micro¬ 
soft Pascal, IBM and Microsoft BASIC, Lattice and Microsoft C, and 
dBASE II and III. CGA, EGA, and Hercules monochrome graphics 


support. 


nflmAmx 


PCDOS List: $395 Ours: $375 
617-567-0037 


Expert System Shell & Language 


Screen Management 


0 ? S ADDON 


Add AI Power to Existing Applications 

Insight 2 + 


“Insight 2 + is an awesome system . . . this may well be the best expert 
system generator on the market.”—ONLINE 

Choose a knowledge engineering tool that makes your current database sol¬ 
utions work smarter with a built-in PASCAL-like knowledge engineering 
grammar that minimizes your training time. Insight 2+ works with your 
installed software and database and has intrinsic dBASE II and III operators. 


plus Level Five’s powerful, flexible Production Rule Language. 

Insight 2+ is a highly connective, integrated expert systems shell that 
adapts to your needs. Its detailed interactive reporting system lets you see 
inside the reasoning process of the knowledge base. You can see reports on 
the lines of reasoning, known and unknown facts, alternate rule pathways 
to a shared conclusion, or knowledge trees, showing all possible goals, con¬ 
clusions, and paths of reasoning hierarchically — and more. You can even 
step forward and back in a rule chain from beginning to end. 

Create “what-if’ scenarios by saving, editing, and re-using knowledge 
base contexts, or customized reporting to track end-user sessions. 

Insight 2 + performs backward and forward chaining inference, supported 
by object attribution and goal outlining, outside program activation, and full 
parameter passing capabilities. 

Insight 2 + supports very large knowledge bases which can be linked — 
the number limited only by disk space. Full scientific and math capabilities 
include logarithmic and trigonometric functions and floating point notation; 
ideal for engineering and scientific applications. 

305-729-9846 PCDOS List: $485 Ours: $389 


Get a Cleaner, Faster, User 
Interface with 

The Screen Ace Form Master 

Coded in assembler to give you the 
power for creative design, and the 
speed not available in other packages. 

Form Master supports all 256 color 
and monochrome attributes. Paint 
screens with the screenbuilder (allows 
changes without recompiling!) and 
save to a DOS file, define screens 
within your program at runtime, or 
combine these techniques, to modify 
screens on the fly. 

400+ lines and 2000+ fields per 
screen; the number of screens limited 
only by available memory. 

Permits flexible function key defini¬ 
tion, toggling field colors and attri¬ 
butes at runtime. Switch between 
screens without losing data. 

DESQview, TopView, MS Win¬ 
dows compatible. Lattice, MS C (all 
models), APL*Plus/PC, Assembler. 
Call for a $3 demo with tutorial. 
PCDOS List: $195 Ours: $179 
818-989-5329 


NOW: Full Shell Programming 
with MSDOS: 
PolyShell with 
UNIX-Like Utilities 

PolyShell gives you a UNIX-com¬ 
patible command environment PLUS 
a full set of UNIX-like utilities — yet 
DOS commands and batch files are al¬ 
ways immediately accessible. 

Alias and Command Macro Sub¬ 
stitution save keystrokes, let you ac¬ 
cess and customize DOS internal 
commands. With History Substitu¬ 
tion, edit, re-execute previous com¬ 
mands or portion of command. 

‘C-Shell’ and Bourne Shell compati¬ 
ble I/O redirection, very flexible 
filename expansion capabilities. 

Includes 30 powerful utilities from 
the UNIX world (like grep, diff, sed, 
cut, paste). Shell and utilities can be 
loaded separately. Requires only 30K 
RAM total. PolyShell is NOT UNIX; 
no UNIX license needed. 

PCDOS List: $149 Ours: $129 

503-645-1150 


Call for a catalog, literature, advice and service you can trust 


Bhours m 

8:30 AM-8:00 PM EST. 


800 - 421-8006 

THE PROGRAMMER’S SHOP™ 
5- 1 *Pond Park Road, Hingham, MA 02043 
Mass.: 800-442-8070or617-826-7531 1/07 


"The scope and detail of services you provide are 
exemplary — it’s obvious you have given a lot 
of thought to what information people need . . . 
For someone like myself, critical appraisals of 
software and comprehensive collections of offer¬ 
ings such as you have are really useful.” 

A. Bruce Cyr 
Foundation of American College 
of Health Care Administrators 


CIRCLE NO. 151 ON READER SERVICE CARD 









The fastest, tightest code 


We have to tell you, we had a hard 
time getting the name down this short. 

Because Microsoft’s new FORTRAN 
Compiler actually has a far longer 
list of features. 

It uses the same optimizer and 
code generator technology that made 
our C Compiler the industry leader. 

And we’ve added special loop 
optimizations that give you the 


smallest, fastest FORTRAN code a 
PC can handle. 

“Now Microsoft’s FORTRAN Opti¬ 
mizing Compiler generates such 
fast code that an IBM PC/XT 
approaches the speed of the VAX!’ 

Peter Osgood, MIT, Project Athena, Director of the 
Real Time Lab Project. 

This compiler has already passed 
the toughest test there is. It’s been 


Microsoft FORTRAN Optimizing Compiler Version 4.0. 


♦ Full ANSI FORTRAN 77 Compiler with Fastest Executable Code for 
MS-DOS. NEW! 

♦ Uses the Microsoft C optimizing technology,plus loop optimization. NEW! 

Execution Speed Microsoft Ryan-McFarland IBM Professional 

(in Seconds) FORTRAN FORTRAN FORTRAN 

v. 4.0 v.2.11 v. 1.22 

Sieve 7.97 9.33 38.51 

Whetstone 53.82 58.67 79.04 

Lookup 5.82 18.61 26.02 

♦ Fully GSA certified for ANSI 77 compatibility with no errors at the 
highest level. NEW! 


♦ Numerous IBM VS and DEC VAX extensions. NEW! 

♦ Microsoft CodeView: Window-oriented source-level debugger. NEW! 
—Debug using your original source code, the resulting disassembly or 

both intermingled. 

—Watch and change the values of your local and COMMON variables 
as you debug. 

—Set conditional breakpoints on variables, expressions or memory; trace 
and single step. 

—Watch and change registers and flags as you execute. 

— Easily debug graphics oriented programs since program output is kept 
separate from debugger output. 




GSA- certified as Full ANSI FORTRAN 
77, and 100% error-free. 

“The Microsoft FORTRAN Opti¬ 
mizing Compiler let us port the 
200,000line Boeing Mathematical 
Library (BCSLIB) with virtually no 
changes. This ANSI FORTRAN 77 
code was ported directly from Cray, 
CDC, DEC, IBM and other main¬ 
frames and workstations” 

Ivor Philips, Boeing Computer Services, Program Manager 
k Mathematical Software Libraries. 

We’ve also included the same 
advanced intrinsic math func¬ 
tions found on VAX® and 
IBM® VS systems. Add 


% 


% 



-^C 


°WeV, evv 




improvements 
like our new HUGE 
memory model, and 
biggest mainframe programs has 
never been easier. 

Among the many additions we’ve 
made to our package is our exclusive 
CodeView™ windowing debugger. It 
lets you trace through programs at 
any level you want, from source 
code to assembly language. 


You can open windows, and watch 
both variables (local and COMMON) 
and CPU registers change. You can 
set conditional breakpoints using 
variables and expressions. 

Debugging gets even easier with 
the compiler’s advanced diagnostics. 
Detailed error messages are 
thoroughly explained and cross- 
referenced in our new manuals. 

Documentation that has been 
completely revised and expanded 
with tons of examples. 

If we’re talking your language, use 
one of the numbers below for more 
details about the Microsoft® ANSI 
FORTRAN 77 Optimizing Compiler 
Version 4.0 with CodeView, 

\ and the name of your 
nearest dealer. 

(Even if the call’s toll-free, 
it may be a good idea to refer to it as 
“FORTRAN 4” for short.) 

Mcrosoft* FORTRAN 

The High Performance Software. 

Call (800) 426-9400. In Washington State or Alaska, (206) 882-8088. In Canada, 

(416) 673-7638. 

Microsoft and MS-DOS are registered trademarks and CodeView is a trademark of 
Microsoft Corporation. IBM is a registered trademark of International Business 
Machines Corporation. VAX is a registered trademark of Digital Equipment Corporation. 


♦ Medium, Large and Huge Memory Model Libraries. NEW! 

♦ Mix models with NEAR, FAR and new HUGE pointers. 

♦ Common blocks and arrays greater than 64K. 

♦ Choose from three math libraries and generate in-line 8087/80287 
instructions or floating point calls: 

—floating point emulator (utilizes 8087/80287 if installed) 
—8087/80287 coprocessor support 

—alternate math package—extra speed without an 8087/80287 

♦ Link your FORTRAN routines with Microsoft C (v. 4.0 or higher), Microsoft 
Pascal (v. 3.3 or higher) or Microsoft Macro Assembler. 

♦ Largest number of 3rd party support libraries available. 


♦ Provides more detailed diagnostic error messages (almost twice as many 
as competitors) and extensive documentation with non-ANSI 77 fea¬ 
tures highlighted. NEW! 

♦ Proven reliability—tested with over 2.5 million lines of code compiled 
and executed. 

♦ MS-DOS® network support with file/record locking and sharing. 

♦ Microsoft Program Maintenance Utility rebuilds your applications 
after your source files have changed. NEW! 

♦ Other utilities including faster overlay linker (links over 1Mbyte object 
code), library manager, EXE file compression utility, EXE file header 
utility, MS-DOS environment setting utility and setup utility. 

CIRCLE NO. 205 ON READER SERVICE CARD 



The fastest C 


Your search for execution speed is over. 
The new Microsoft® C Compiler Version 4-0 
is here. With blazing performance. We’ve 
added common sub-expression elimination 
to our optimizer that produces code that 
rips through the benchmarks faster than 
ever before. 

“... the Microsoft performance in the benchmarks 
for program execution is the best of the lot overall’.’ 
—William Hunt, PC Tech Journal, January, 1986* 

But speed isn’t the only edge you get with 
Microsoft C. Other advantages include a vari¬ 
ety of memory models like our new HUGE 
model that breaks the 64K limit on single 
data items. Plus our NEAR, FAR and HUGE 
pointers, which provide you greater flexibility. 
All this allows you to fine tune your program 
to be as small and fast as possible. 

“Excellent execution times, the fastest register 
sieve, and the best documentation in this review 
... Microsoft Corporation has produced a 
tremendously useful compiler.”—Christopher 
Skelly, Computer Language, February 1986. 

No more debugging hassles. 

Introducing CodeView. Free. 

Now, for a limited time, we’ll give you an 
unprecedented programming tool when you 
buy Microsoft C, free. New Microsoft Code¬ 
View™ offers the most powerful tool yet in 



the war on C bugs. Forget the hex dumps. 
Now you can view and work with programs 
at any level you want. Use the program 
source, the disassembled object code, or 


Microsoft C Compiler Version 4.00 
Microsoft C Compiler 

♦ Produces fast executables and optimized code including elimination 

of common sub-expressions. NEW! 

♦ Implements register variables. 

♦ Small, Medium and Large Memory model libraries. 

♦ Compact and HUGE memory model libraries. NEW! 

♦ Can mix models with NEAR, FAR and the new HUGE pointers. 

♦ Transport source and object code between MS-DOS® and XENIX® 
operating systems. 

♦ Library routines implement most of UNIX™ System V C library. 

♦ Start-up source code to help create ROMable code. NEW! 

♦ Full proposed ANSI C library support (except clock). NEW! 

♦ Large number of third party support libraries available. 

♦ Choose from three math libraries and generate in-line 8087/ 80287 
instructions or floating point calls: 

— floating point emulator (utilizes 8087/80287 if installed). 

— 8087/80287 coprocessor support. 

— alternate math package — extra speed without an 8087/80287- 

♦ Link your C routines with Microsoft FORTRAN (version 3.3 or 
higher), Microsoft Pascal (version 3.3 or higher) or Microsoft 
Macro Assembler. 

♦ Microsoft Windows support and MS-DOS 3.1 networking support. 

♦ Supports MS-DOS pathnames and input/output redirection. 

Microsoft Program Maintenance Utility. NEW! 

♦ Rebuilds your applications after your source files have changed. 

♦ Supports macro definitions and inference rules. 

Other Utilities 

♦ Library Manager. 

♦ Object Code Linker. 

♦ EXE File Compression Utility. 

♦ EXE File Header Utility. 

C Benchmarks , n seconds 


Sieve of 
Eratosthenes 

Microsoft 
C 4.0 

Lattice 

C 3.0 

Computer 

Innovation 

C 2.3 

Aztec 
C86 3.2 

Wizard 
C 3.0 

(register) 

82.9 

151.4 

172.3 

88.0 

91.9 

Copy Block 

86.9 

231.7 

199.0 

123.8 

189.5 


Run on an IBM PC XT with 512K memory 


Microsoft CodeView 

Window-or iented source-level debugger. NEW! 

♦ Watch the values of your local and global variables and expressions 
as you debug. 

♦ Set conditional breakpoints on variables, expressions or memory; 
trace and single step. 

♦ Watch CPU registers and flags as you execute. 

♦ Effectively uses up to four windows. 

♦ Debug using your original source code, the resulting disassembly 
or both intermingled. 

♦ Use drop-down menus to execute CodeView commands. 

♦ Access the on-line help to lead you through CodeViews options 
and settings. 

♦ Easily debug graphics-oriented programs since program output is 
kept separate from debugger output. 

♦ Keyboard or optional mouse support. 

♦ Enter in familiar SYMDEB or DEBUG commands. 


‘Reprinted from PC Tech Journal, January 1986, copyright 1986, Ziff-Davis Publishing. 







youve ever seen. 


both at the same time. Open a window to 
view CPU registers and flags. Watch local 
and global variables as well All while your 
program is running. 

CodeView gives you complete control. 
Trace execution a line at a time—using 
source or assembly code. Or set conditional 
breakpoints on variables, memory or expres¬ 
sions. CodeView supports the familiar 
SYMDEB command syntax, as you’d expect. 
Commands are also available through drop¬ 
down menus. Combine the new window- 
oriented interface with our on-line help and 
debugging has never been easier. Or quicker. 


Take the $5 CodeView tour. 

You may find it hard to believe our debug¬ 
ger can do all we’ve claimed. So we’re offering 
test drives. Five bucks will put you behind 
the wheel of a Microsoft C demo disk with 
CodeView. 1- See for yourself how fast debug¬ 
ging can get. 

For more information about the Code¬ 
View demo disk, the new Microsoft C 
Compiler, a list of third party library sup¬ 
port or the name of your nearest Microsoft 
dealer, call (800) 426-9400. In Washington 
State and Alaska, (206) 882-8088. In Canada 
call (416) 673-7638. 


File Search Uieu Run Watch Options 


Calls 


Trace? Go? 


=j roath.c f= 


0) island : 244 

1) tiszeroO ‘ 1 

2) 4034:0000 00 00 00 00 00 00 00 00 43 


arctan(2) 


nain(2,12782) 


72 


3BB5:00EE 

3BB5:0BF1 

33)B5:00F4 

3BB5:00F5 

13: 

3DB5:88F8 

14: 

3DB5:80FD 

3DB5:0BFE 

3DB5:0181 

15: 

3DB5:8104 

16: 

3DB5:0107 

17: 


B80200 

E89402 

56 

8B7604 

t [ 0 ] = 
C686441A01 

diu(s) ) 
56 

E82601 

83C402 

add(); 

E84D88 

island 
C746FE0100 
do i 


HOC 

CALL 

PUSH 

M0U 


AX,0002 

_chkstk (0388) 

SI 

SI,Word Ptr IBP+04I 


i; 


HGU 


PUSH 

CALL 

ADD 


Byte Ptr [_t (1A44)],01 
/* t[] = 1/s */ 
s 

_diu (0227) 

SP,+02 


CALL 

= i; 
H0U 


_add (0154) 

Word Ptr I is land 1,0001 


;BR8 


>da 33 0x29 
4834:0021 Microsoft 

> 


pi.exe 


AX = 0002 
BX = 3 ICC 
CX = 00F4 
DX = 1E88 
P SP = 31CA 
5 BP = 31CE 
1 SI = 0802 


1 DI = 32A8 


I DS = 4034 
I ES = 4034 


1/ SS = 4034 


I CS = 3DB5 
j IP = 00F8 
i nourflou 


up 

1 enable 

v; positive 
| not zero 


no auxcy 
odd 


Microsoft* C Compiler 

The High Performance Software 


Microsoft. MS-DOS and XENIX are registered trademarks and CodeView is a trademark of Microsoft Corporation. UNIX is a 
trademark of AT&.T Bell Laboratories. IBM is a registered trademark of International Business Machines Corporation. tOffer expires 12/31/86. 


CIRCLE NO. 140 ON READER SERVICE CARD 





For years BASIC has been everyone’s first 
language. And for almost as long, they’ve been 
tempted by other languages. Lured by promises 
of more speed, more power. 

We have a solution. A new language that’s a 
substantial improvement over BASIC A. Faster. 
More structured. Finally, a compelling reason to 
leave BASIC. 

Introducing Microsoft’s QuickBASIC 
Compiler, Version 2.0. 

At last, you can have the latest programming 
techniques, combined with the solid foundation 
of BASIC. Our new compiler is as compatible 
with BASICA as you can get. At the same time 
it offers the extra speed and power you’ve been 
looking for. 


Run faster with compiled code. 

If there’s one thing you’ve asked for, it’s speed. 
And Microsoft® QuickBASIC simply blazes. 
Old BASICA programs will run up to ten times 
quicker once they’ve been compiled. Sometimes 
even faster. 

Everything you need. Built-in. 

Making programs run faster is only part of the 
story, though. The new Microsoft QuickBASIC 
Compiler includes a full-screen editor, built-in. 
So now you can make the jump from writing to 
RUNning in no time flat. Edit your program, 
compile it, and run it. Faster than any other 
BASIC compiler around. All without leaving 
our on-line help and prompts. 




SUB Bra wS tar (cx,ey,radius,theta) STATIC 
dx = radius * cos (theta) 
dy = radius * sin (theta) 

1ine(cx,cy)-(cx+dx,cy+dy)i2 

end sub 


Run 


Find... 

Selected Text *T 
Repeat Last Find F3 
Change... 


NEXT theta 


Label 


theta =0 TO 2* 
CALL BrawStarCc 


Next Error F6 


Microsoft is a registered trademark and The High Performance Software is a trademark of Microsoft Corporation. IBM is a registered trademark of International Business Machines Corporation. 













leaving BASIC for. 



On the rare chance your program doesn’t run 
100% the first time out, we’ve got another sur¬ 
prise for you. The Microsoft QuickBASIC de¬ 
bugger. Our full-screen tracing lets you 
debug your programs while watch¬ 
ing the source code execute. A line 
at a time, or with breakpoints. As 
easy as can be. 

Our compiler is also smart enoug 
to save you time. First, by finding any 
errors in one pass. Second, by putting your 
editor’s cursor on the problem. Automatically. 
So you don’t have to get lost in a maze of error 
codes and line-numbers. 


Microsoft QuickBASIC Compiler Version 2.0 
for IBM® PC and Compatible Computers. 

BASICA Compatibility 

♦ Sound statements including SOUND and PLAY. 

♦ Graphics statements including WINDOW VIEW DRAW 
GET, PUT, LINE, CIRCLE, LOCATE and SCREEN. 

♦Support of EGA extended graphics modes. NEW! 

♦ BASICA structures are supported including WHILE/WEND, 
IF/THEN/ELSE, FOR/NEXT, GOSUB/RETURN, and 
event handling. 

Microsoft 

Results of Sieve Benchmark BASICA 3.1 QuickBASIC 2.0 
Seconds per iteration 78 0.52 

Complete Programming Environment 

♦ Built-in Editor that places the cursor on found errors auto¬ 
matically. NEW! 

♦ Compile entirely in memory at speeds up to 6000 lines per 
minute. NEW! 


The BASIC virtues. And more. 

Speaking of line numbers, let’s not. Because 
line numbers are strictly optional. And Microsoft 
QuickBASIC lets you use alphanumeric labels 
as well. Now you can GOTO ErrorCheck instead 
of line number 6815. 

Or you could stop using GOTOs altogether. 
There are a variety of options that could make 
the GOTO an endangered species. Features like 
multi-line IF-THEN blocks. And named sub¬ 
programs. Now your BASIC programs can be 
as structured and organized as you want. 

We’ve only just begun to talk about the 
virtues of Microsoft QuickBASIC. There are 
dozens of enhancements to your favorite 
language. Things like larger arrays. Local and 
global variables. Reusable modules that let you 
create libraries of your most often-used routines. 
All explained in a revised manual that includes 
a complete language reference. 

Making your quick escape. 

If all these features follow your BASIC 
instincts, then zip on down to your nearest 
Microsoft dealer. That’s where you’ll discover the 
best surprise of all. The price. Only $99 for the 
best reason to leave BASIC. 

For the name of your nearest Microsoft dealer, 
call (800) 426-9400. In Washington State and 
Alaska, (206) 882-8088. In Canada, call (416) 
673-7638. 

Microsoft® QuickBASIC 

The High Performance Software™ 

CIRCLE NO. 121 ON READER SERVICE CARD 


♦ Link routines once when starting a programming session and 
no need to link again when changing programs. NEW! 

♦ Built-in debugger with single-step, animate, and trace modes. 


NEW! 



♦ Create stand-alone programs. 

Alphanumeric Labels 

♦ Can be used to make your programs more readable. Line 
numbers are not required but are supported for BASICA 
compatibility. 

Structured Programming Support 

♦ Block IF/THEN/ELSE/END IF eliminates the need for 
GOTO statements. NEW! 

♦ Subprograms can be called by name and passed parameters. 
Both local and global variables are supported. 

Modular Programming Support 

♦ Separate compilation allows you to create compiled BASIC 
libraries to use and re-use your programs. 

♦ A library of routines to access DOS and BIOS interrupts is 
supplied. NEW! 

Large Program Support 

♦ Code can use up to available memory. 

♦Numeric arrays, each up to 64K bytes, 

can use up to available memory. 

NEW! 









TECH RELEASES 


Hardware, software, and other developments for the IBM PC family 




Screeri produced with Conographic's ConoVision 2800 board 


PCMS Director from Racet Computes, Ltd. 


HARDWARE 

The Net/One Universal Workstation 
Series is a group of hardware and soft¬ 
ware products from Ungermann-Bass, 
Inc., designed to develop a local area 
network (LAN) for corporate use. 

The Net/One 3270 NIUpc net¬ 
work interface unit (NIU) adapter card 
enables a networked PC to run micro- 
to-mainframe applications that are writ¬ 
ten to the IRMA (Digital Communica¬ 
tions Associates, Inc.) and IBM 3278/79 
Emulation Adapter hardware (Ethernet 
baseband version, $1,495; broadband, 
2,145). Net/One 3270 PC software en¬ 
ables a PC/XT or PC/AT to function as a 
full-featured, networked IBM terminal. 
Net/One 3270 PC supports as many as 
four 3270 terminal and printer sessions, 
two asynchronous terminal sessions, 
and one DOS application simultaneous¬ 
ly. Full support for the IBM 3270 PC 
control program version 2.1 application 
program interface (API) has been added 
($295 per workstation). Net/One PC 
Graphics software provides pro¬ 
grammed symbol support for the Net/ 
One 3270 PC and lets the user run as 
many as four concurrent IBM graphics 
sessions with an IBM CGA or EGA ($295 
per workstation). Net/One Async PC is 
communications software that allows 
PCs to exchange data with asynchronous 
resources on Net/One. A set of terminal 
emulation products is included with the 
Net/One Asynch PC application program 
interface (API) to allow communication 
with a variety of minicomputers ($1,200 
per server when bundled with Micro- 
stuf, Inc.’s Crosstalk XVI; $1,600 per 
server when bundled with Crystal Point, 
Inc.’s ^term— see SOFTWARE). 

Working in conjunction with the 
Net/One PC software, the Net/One 
NIUpc adapter card provides server 
support for as many as 96 users, server 
support for diskless PCs, an extensive 
log-on security system that is embedded 


in network protocol, and a pop-up 
window utility that allows connections 
to Net/One resources to be made or 
deleted and network print queues to be 
viewed from within the PC application 
(Ethernet baseband version, $1,095; 
broadband, $1,745). 

Ungermann-Bass also has intro¬ 
duced high-speed network bridges capa¬ 
ble of linking local or geographically 
remote IBM-compatible token-ring LANs 
to an Ethernet network. Available in 
local and remote models, Net/One 
Data Link Bridges provide protocol- 
independent routing of data packets 
among multiple types of LANs. Bridges 
allow multiple communications proto¬ 
cols, such as Xerox Network System 
(XNS), Transport Control Protocol/Inter¬ 
net Protocol (TCP/IP), International 
Standards Organization (ISO), and Digi¬ 
tal Equipment Corporation’s DECnet to 
operate over the bridge. Both the 3Com 
Ethernet and IBM Token-Ring networks 
can run on high-speed T-l telecommu¬ 
nications links between distant sites. All 
remote bridges operate from 4.8 Kbps 
to 2.048 Mbps. Baseband and broadband 
versions of these data link bridges range 
from $9,495 to $10,095. Software for 
each model is $2,000. 

Ungermann-Bass, Inc., 3900 Freedom 
Circle, Santa Clara, CA 95052-8030; 
408/496-0111 
CIRCLE 301 ON READER SERVICE CARD 

Racet Computes, Ltd. has announced 
an expansion of its PCMS (personal 
computer mass-storage) line of subsys¬ 
tems. The new products offer capacities 
of between 148MB and 870MB in a sin¬ 
gle enclosure. Four basic configurations 
are available: the Administrator, with 
148MB formatted capacity; the Supervi¬ 
sor, with 200MB; the Manager, with 
more than 300MB; and the Director, 
with more than 400MB. Each configura¬ 
tion comes standard with 125MB 
streaming-tape backup capability. The 
ESMD controller operates at 2.4MB per 


second and has .5MB of cache memory 
that is expandable to 4.5MB. The aver¬ 
age access time is 18 milliseconds (ms) 
for the Supervisor, Manager, and Direc¬ 
tor, and 25 ms for the Administrator. 
Prices range from $7,950 to $39,900; 
add-on 4MB cache, $3,750. 

Racet Computes, Ltd., 1855 W. Katella, 
Suite 255Orange, CA 92667; 
714/997-4950 

CIRCLE 310 ON READER SERVICE CARD 

ConoVision 2800 is a desktop publish¬ 
ing board from Conographic Corpo¬ 
ration. The board combines a high-res¬ 
olution monochrome graphics adapter 
and a raster image processor (RIP) for 
doubling the resolution of popular laser 
printers. The ConoVision 2800 can dis¬ 
play two-page spreads with true type¬ 
faces readable to as small as six points; 
it can double the output of Hewlett- 
Packard LaserJets to 600-by-300 dots per 
inch (dpi), and has a resolution up to 
2,880-by-l,024 pixels. Screen drivers en¬ 
able any software running under Micro¬ 
soft Windows to run under ConoVision 
2800. Hardware for scrolling, panning, 
and zooming is included. The board has 
a Hercules-compatible mode and drives 
19-inch professional (100 MHz) and 
15-inch high-performance (50 MHz) 
monitors. ConoVision 2800 with RIP, 
$1,985; without RIP, $1,325. 

Conographic Corporation, 17841 Fitch, 
Irvine, CA 92714; 714/474-1188 

CIRCLE 312 ON READER SERVICE CARD 

Number Nine Computer Corpora¬ 
tion introduces its Pepper Graphics 
System family with the pepper proi280. 

The pro 1280 combines the Number Nine 
Intelligent Operating System (a library 
of on-board, device-independent graph¬ 
ics, video control, and advanced mem¬ 
ory-management functions) and the 
Memory Windows architecture, which 
allows mapping of IBM address space to 
the pro 1280 display or instruction mem- 
on', with Texas Instrument’s TMS 34010 


32 


PC TECH JOURNAL 















GSP graphics coprocessor. It combines 
noninterlaced 1,280-by- 1,024-pixel reso¬ 
lution and 256 on-screen colors with 
IBM monochrome, CGA, and Profession¬ 
al Graphics Controller compatibility, in 
a single-board, single-monitor system. 
The board has 1.25MB of video RAM 
(expandable to 8MB), 128KB of instruc¬ 
tion RAM, 128KB of graphics firmware, 
and either a 4,096- or a 16-million-color 
palette. The PRO 1280 features a l6-by-38- 
pixel system font, as well as high display 
resolution. $3,000. 

Number Nine Computer Corporation, 
725 Concord Avenue, Cambridge, 

MA 02138; 6171492-0999 

CIRCLE 307 ON READER SERVICE CARD 

From Epson America, Inc. comes the 
Image Scanner Option Kit, an acces¬ 
sory for Epson’s EX-800, EX-1000, and 
LQ-2500 dot-matrix printers. The scan¬ 
ner reads and converts hard-copy 
images into bit-image data, then trans¬ 
mits the data through a serial interface 
to a host computer where they are 
stored. The scanner offers a resolution 
of 180-by-180 dots per inch (dpi) on the 
LQ-2500, and l44-by-l44 dpi on the EX 
series. A page of graphics can be 
scanned or digitized at 27 inches per 
second (ips) on the LQ-2500, and 25 ips 
on the EX series. $299.95. 

Epson America, Inc., Computer Products 
Division, 2780 Lomita Blvd., Torrance, 
CA 90505; 800/421-5426; in California, 
213/539-9140 

CIRCLE 303 ON READER SERVICE CARD 

A family of laser page printers that is de¬ 
signed for shared resource environ¬ 
ments, the OmniLaser Series 2000, 
has been announced by Texas Instru¬ 
ments. The OmniLaser 2015 has a 
print speed of 15 pages per minute 
(ppm), a maximum-duty cycle of 25,000 
pages per month, and a machine life of 
1.5 million prints. The OmniLaser 
2115 uses the same 15-ppm print en¬ 
gine as the 2015; its PostScript control¬ 


ler with 3MB of RAM is built around the 
32-bit Motorola 68000 chip. The Omni¬ 
Laser 2108 has an 8-ppm engine with a 
duty cycle of 10,000 pages per month, a 
600,000-print machine life, and a 68000- 
based PostScript controller with 2MB of 
RAM. OmniLaser 2015, $5,995; 2115, 
$7,995; 2108, $5,995. 

Texas Instruments, Data Systems Group, 
P.O. Box 809063, H-861, Dallas ., TX 
75380-9063; 800/527-3500 

CIRCLE 304 ON READER SERVICE CARD 

AST Research, Inc. has announced the 
AST-5250/Gateway, a single board with 
software that connects a LAN to an IBM 
System/3x machine. This gateway allows 
any LAN node to emulate 5250 terminal/ 
printer sessions without an emulation 
card. The AST-5250/Gateway accommo¬ 
dates remote and local distribution sys¬ 
tems in peer-to-peer or host communi¬ 
cations link-ups. One microcomputer on 
the LAN is equipped with the AST 5251/ 
11 Plus emulation card and a software 
package that distributes 5250 terminal/ 
printer sessions to other nodes on the 
LAN. A maximum of three Gateways can 
coexist on the same LAN, and each Gate¬ 
way can communicate simultaneously to 
a different host. Connections from the 
Gateway are made via standard twin¬ 
axial cable for local hosts or SNASDLC 
for remote hosts. $1,995. 

AST Research, Inc., 2121 Alton Avenue, 
Irvine, CA 92714-4992; 714/863-1333 

CIRCLE 313 ON READER SERVICE CARD 

Three networking products have been 
introduced by Racore Computer 
Products, Inc. The LANpac II, a high- 
performance network system designed 
for Novell Advanced NetWare, can be 
connected in either a linear-bus or star 
configuration using coaxial or twisted¬ 
pair cable. It operates at selectable 
speeds of 4Mbit, 8Mbit, or 16Mbit per 
second. As many as 250 LANpac stations 
per cluster can be connected at a dis¬ 
tance of up to 1,000 feet between sta¬ 


tions. A diskless workstation incorpo¬ 
rating optional LANpac circuitry for use 
in a PC/AT-compatible environment is 
available. An Intel 80286, operating at 10 
or 12 MHz, provides AT performance. 
Available with LANpac directly inte¬ 
grated onto the main processor board, 
the workstation can accommodate as 
much as 2MB of memory. LANpac 
802.5 is a plug-compatible IBM Token- 
Ring adapter that can be incorporated 
into an existing IBM Token-Ring Net¬ 
work. LANpac 802.5 transfers data at the 
rate of 4Mbit per second using coaxial 
or twisted-pair cable. LANpac II, $295 
per node; diskless workstation, $850 to 
$1,525; LANpac 802.5, $495 per node. 
Racore Computer Products, Inc., 170 
Knowles Drive, Los Gatos, CA 95030; 
408/374-8290 

CIRCLE 314 ON READER SERVICE CARD 

Convergent Technologies has re¬ 
leased several products for its network 
architecture, the Cluster. The Series 
386 NGEN is an upgrade for current us¬ 
ers of Convergent’s NGEN workstations. 
Existing applications and peripherals are 
compatible with the new processor. 
CTOS/VM, a PC-compatible version of 
Convergent’s distributed multitasking 
operating system, CTOS, supports multi¬ 
ple operating systems and their applica¬ 
tions. It also provides support for 80286/ 
80386 protected mode. The Cluster- 
Card, which fits expansion slots on both 
the PC/AT and PC, and ClusterShare 
server software, provide network ser¬ 
vices, including electronic mail and re¬ 
source sharing, to PCs over ClusterNet. 
TeleCluster piggybacks Cluster data on 
standard voice signals over existing in- 
house telephone wiring. The AT-com- 
patible Network PC is designed to op¬ 
erate with or without local disk storage 
on the Convergent Cluster, 3 Com 
Ethernet, and other standard networks. 
Its built-in functions includes EGA video 
and up to 1MB of memory, in a desktop 
design. Retail prices are not applicable; 


Texas Instrument’s OmniLaser Series of laser printers 


MARCH 1987 


33 























TECH RELEASES 


80386-based Multireel) 1100 system 


DF-1 coprocessor board from Data Flow Imaging, Inc. 



all products are available in original 
equipment manufacturer (OEM) quan- 
tites and to value added retailers (VAR). 
Convergent Technologies, 2700 N. First 
Street, P.0. Box 6685, San Jose, CA 
95150-6685; 408/434-2848 

CIRCLE 311 ON READER SERVICE CARD 

A graphics board that is designed to run 
on the Sony Multiscan CPD 1302 moni¬ 
tor has been released by QDP Com¬ 
puter Systems, Inc. The viva iooo/scan 
with a resolution of 1,000-by-600 pixels 
and 16 simultaneous colors, displays a 
high-resolution, flicker-free image; it 
uses an NEC 7220A microprocessor. 
Features that are built into the board in¬ 
clude hardware pan and zoom, and 
user-selectable cursors and colors, 
which are available via a single key¬ 
stroke. The viva iooo/scan can be up¬ 
graded to QDP’s 1000/16, which has a 
resolution of 1,024-by-1,024 pixels and 
drives 19-inch monitors. An available 
upgrade permits the display of 256 
colors simultaneously from a palette of 
16.8 million. Under $1,300. 

QDP Computer Systems, Inc., 23632 
Mercantile Road, Beaclnvood, 

OH 44122; 216/464-6600 

CIRCLE 308 ON READER SERVICE CARD 

Three low-cost interface boards that 
permit accurate monitoring and control 
of real world signals for the IBM PC, 
PC/XT, and PC/AT have been announced 
by Real Time Devices, Inc. The 
AD500 and AD100 are 12-bit analog in¬ 
put boards, and the DG24 is a digital 
I/O board. All three boards are designed 
to fit into the PCs short slot. The AD500 
has eight channels of 12-bit resolution 
and an on-board amplifier with software 
programmable gains of 1, 10, and 100. It 
can digitize analog input signals at 7.5 
conversions per second—providing very 
high immunity to 60-cycle line noise. 

The software-selectable analog input 
ranges are ± 5 volts, ± 500 millivolts, 
and ± 50 millivolts. The inputs are sin¬ 


gle-ended and are protected to 35 volts. 
Seven TTL-compatible digital lines can 
be configured as inputs or outputs arid 
can be used to activate relays, sense 
switch closures, or control other exter¬ 
nal devices. The AD 100 is a single-chan¬ 
nel version of the AD500 with three 
additional I/O lines. The DG24 is a digi¬ 
tal I/O board based on the 8255 periph¬ 
eral interface chip with 24 TTL-compati¬ 
ble lines that can be configured in soft¬ 
ware as input or output lines. The board 
can be configured to support handshak¬ 
ing. Interrupts are jumper-selectable. 
AD500, $239; AD100, $149; DG24, $95. 
Real Time Devices, Inc., 1930 Park For¬ 
est Avenue, P.O. Box 906, State College, 
PA 16804; 814/234-8087 

CIRCLE 317 ON READER SERVICE CARD 

A 16-MHz, 80386-based microcomputer 
has been introduced by Multitech 
Electronics, Inc. The Multitech 1100 

base system comes standard with 1MB 
of RAM on the motherboard, a 1.2MB 
diskette drive, a 40MB hard-disk drive 
with a 28-millisecond average access 
time, a diskette/hard-disk controller 
board, a battery-backed clock/calendar, 
one parallel and two serial ports, and a 
101-key keyboard. The Multitech 1100 
has space for five half-height 5^-inch 
storage devices, a socket for an 80287/ 
80387 numeric coprocessor, and eight 
expansion slots (two PC/XT-type, five 
PC/AT-type, and one 32-bit dedicated 
memory bus). Multitech 1100, $3,999; 
with 80MB hard disk, $5,995; with 
130MB hard disk, $6,495; Multitech en¬ 
hanced color graphics board, $379; en¬ 
hanced color display, $599. 

Multitech Electronics, Inc., 1012 Stewart 
Drive, Sunnyvale, CA 94086; 
408/773-8400 

CIRCLE 302 ON READER SERVICE CARD 

The GV-386, a 16-MHz, 80386-based 
machine, has been introduced by PC 
Designs, Inc. Operating with zero wait 
states when the cache is enabled, the 


GV-386 uses standard DRAM rather than 
the static column RAM. The GV-386 
meets the I/O bus timing of the 8-MHz 
PC/AT, to provide maximum compatibil¬ 
ity with existing add-on boards. Some 
features include 64KB, 35-nanosecond 
(ns) to 45-ns static RAM cache circuit, 
an on-board cache circuit that can be 
enabled/disabled via keyboard toggle, 
switchable 8-MHz/l6-MHz clock speed, 
and a specially designed AT-compatible 
BIOS that allows for operation of BIOS 
timing loops independent of CPU clock 
speeds. Bundled with the GV-386 are 
Quarterdeck Office Systems’ expanded 
memory manager and DESQview ver¬ 
sion 1.3 multitasking environment. 
GV-386 with 40MB hard disk, $3,950; 
with 80MB hard disk, $4,325. 

PC Designs, Inc., 2500 N. Hemlock 
Circle, Broken Arrow, OK 74012; 
918/251-5550 

CIRCLE 305 ON READER SERVICE CARD 

A coprocessor board for the PC bus that 
contains four 5-MIPS (million instruc¬ 
tions per second) NEC |xPD7281 data¬ 
flow (token-passing) processors is avail¬ 
able from Data Flow Imaging, Inc. In 
addition to the four data-flow proces¬ 
sors, the DF-1 board contains an NEC 
pPD9305 memory access and general 
bus interface chip and 128KB of local 
image memory. The (xPD7281 processor 
chip (nicknamed ImPP, for image-pipe- 
lined processor) uses a 17-bit-by-17-bit 
hardware multiplier for high processing 
speed. A single ImPP can compute a 3- 
by-3 convolution of a 512-by-512-pixel 
(8 bits per pixel) image in 2.98 seconds; 
two ImPPs will do the same convolution 
in 1.5 seconds. DF-1 supports direct 
memory access (DMA) transport of data 
between the PC memory and the DF-1 
image memory, and can be configured 
to use interrupt-driven communications 
with the PC’s CPU. DF-1, $995. 

Data Flow Imaging, Inc., P.O. Box 116, 
Westwood, NJ 07675; 201/666-7970 

CIRCLE 309 ON READER SERVICE CARD 


34 


PC TECH JOURNAL 



















W 


I JLASER PLUS 
xillt combination! 
Interface) 


Other ingred 

1 PC, XT, or AT it 
computer 

1 Canon-based JOi 
I Canon IX*123(H 






It makes desktop publishing 
a piece of cake! 


Tall Tree Systems 
introduces another 
breakthrough in desk¬ 
top publishing with 
JLASER PLUS. We've 
combined a 2 MB 
EMS memory board 
and an interface to 
both a Canon®-based 
laser printer and 
scanner. JLASER PLUS 
increases the perfor¬ 
mance of both devices 
and gives you a low- 
cost solution to the 
limitations you've been 
experiencing with 
them. 


Furthermore, the 
same memory that is 
made available to 
your printer and scan¬ 
ner is also available for 
all your other conven¬ 
tional applications. 

You get system mem¬ 
ory, expanded LIM 
memory, extended 
memory in an AT-type 
machine, RAM Disk 
and print spooler — 
all in a single slot! 

Supporting JLASER 
PLUS is a host of soft¬ 
ware packages, such 
as PC Paintbrush + 


from 
Z Soft, 

Dr. Halo D.P.E. 
fro‘m Media Cyber¬ 
netics, LaserGL from 
Software Express, 
Ventura Publisher from 
Xerox, Page Builder 
from White Sciences, 
Le Print from Le Baugh 
Software, Fancy Font 
and Fancy Word from 
SoftCraft, Inc., and 


many more 
to be announced. 

It takes a techno¬ 
logical innovator like 


Tall Tree 
Systems to 
provide a major 
advancement like 
JLASER PLUS. And 
we don't stop at 
performance. We also 
deliver value, which is 
truly icing on the cake. 

TALL TREE SYSTEMS 

1120 San Antonio Road 
Palo Alto, CA 94303 
(415) 964-1980 


CIRCLE NO. 194 ON READER SERVICE CARD 

TALL TREE SYSTEMS 


Canon k a rpnkfprpd trademark of Canon I nr All sofrwarp narkanes Ikrpd are trademarks, of fhpir resner th/e rnmnanies 


(5) IQflA hv Tall Trpp <k/crpmc All rinhfc resented 


.. 














SOFTWARE 

A DOS extender and command inter¬ 
preter, PolyShell, has been introduced 
by Polytron Corporation. PolyShell 
adds a UNIX interface to DOS and is 
invoked as a program under DOS that 
may be exited or restarted at any time 
without rebooting. Any DOS command, 
including internal commands and batch 
files, can be called from within Poly¬ 
Shell, as can UNIX-like commands. This 
program includes more than 50 utility 
programs such as split, which splits 
large files into smaller files; whereis, 
which searches a drive for a particular 
file; diff, which compares two files and 
prints their differences; and grep, which 
searches files for character strings. $149. 
Polytron Corporation , 1815 N.W. 

169th Place, Suite 2110, Beaverton, 

OR 97006; 800/547-4000; in 
Oregon, 503/645-1150 

CIRCLE 334 ON READER SERVICE CARD 

Phoenix Technologies, Ltd. has de¬ 
veloped a software coprocessor technol¬ 
ogy that enables manufacturers of com¬ 
puters based on non-IBM-compatible 
processors, such as the Motorola 68000, 
to offer a DOS-based, PC-compatible 
operating mode entirely through soft¬ 
ware emulation. The Soft Co-Proces- 
sor will provide a fully PC/XT-compat- 
ible environment for workstation man¬ 
ufacturers with incompatible operating 
systems (or processors), and requires 
no additional hardware. Soft Co-Proces¬ 
sor supports all existing I/O controllers. 
As with hardware coprocessors, Soft Co- 
Processor traps and responds to all I/O 
functions with emulation software. How¬ 
ever, the soft version includes additional 
emulation software that remaps the Intel 
processor instruction set to the host sys¬ 
tem’s native processor. PC video is sup¬ 
ported through the standard screen or 
window manager. The DOS file system 
is fully integrated with the native file 


system, thus allowing users to read and 
write files created from either environ¬ 
ment. Licensing to OEMs is available. 
Phoenix Technologies, Ltd., 320 
Norwood Park South, Norwood, 

MA 02062; 617/769-7020 

CIRCLE 328 ON READER SERVICE CARD 

True BASIC, Inc. has released version 
2.0 of True BASIC, in which the full 
range of graphics display cards, includ¬ 
ing Hercules, IBM EGA, and IBM CGA, is 
supported; GKI (graphic kernel system) 
syntax has been expanded; and mouse 
support added. True BASIC 2.0 features 
separately compilable modules that may 
be stored as libraries. Because modules 
have their own initialization sections, 
the user can set up global variables, sep- 



Version 2.0 from True BASIC, Inc. 


arate graphics output from the rest of 
the program, or turn on instrumenta¬ 
tion. True BASIC 2.0 is faster than ear¬ 
lier versions and offers even better sup¬ 
port for 8087/80287 numeric coproces¬ 
sors. Maximum string length has been 
increased to 64KB per string, and still 
supports 640KB of memory. Added de¬ 
bugging tools aid in tracing program ex¬ 
ecution or printing a cross-referenced 
listing. $149.90; upgrade, $30.00. 

True BASIC, Inc., 39 S. Main Street, 
Hanover, NH 03755; 603/643-3882 

CIRCLE 332 ON READER SERVICE CARD 


Version 1.03 of the DADiSP Work¬ 
sheet, a technical spreadsheet for digi¬ 
tal signal analysis, is available from DSP 
Systems. DADiSP 1.03 features the DSP 
pipeline, which allows users to run ex¬ 
ternal programs within the DADiSP en¬ 
vironment. Using DSP pipeline, the user 
can, with a single command, export data 
from any DADiSP window to an external 
set of analysis or filtering algorithms 
and bring the modified data back into 
DADiSP. He also can run third-party 
IEEE 488, RS-232, and plotter drivers 
from DADiSP. $795. 

DSP Systems, One Kendall Square, 
Cambridge, MA 02139; 617/577-1133 

CIRCLE 324 ON READER SERVICE CARD 

A serial communications product that 
runs concurrently with DOS and other 
applications on the PC family is being 
offered by Sundance Software, Inc. 
handshake allows users to communi¬ 
cate over serial lines without leaving an 
application or waiting for the communi¬ 
cations to finish before continuing. 
handshake also allows several PCs to be 
connected to share resources without 
the need for a file server. Two PC hand¬ 
shake links, $229; handshake for each 
additional PC, $99. 

Sundance Software, Inc., P.O. Box 434 , 
Redmond, WA 98073; 206/885-0759 

CIRCLE 327 ON READER SERVICE CARD 

MicroSim Corporation has released 
version 3.0 of its PSpice analog elec¬ 
trical-circuit simulator. PSpice has been 
converted from FORTRAN into C in or¬ 
der to make use of the advantages of C: 
A reduction in the program code size 
(and more compact data structures) has 
doubled the maximum circuit size from 
120 to 240 metal oxide semiconductors 
(MOS) transistors on the PC. Execution 
times have been improved. Changes in 
input processing allow circuit nodes to 
be given names or numbers, thus facili¬ 
tating access nodes inside subcircuits. 
PSpice 3.0 is compatible with (Univer- 


36 


PC TECH JOURNAL 


























I\m imm 


JRRM-RT TRLL TREE SYSTEMS 

COPYRIGHT © 1S6S Tflu THE! 


Spflflw 


,8MB 

$3999 


A Technological Innovator. 
Always a Step Ahead! 



For true industry leader¬ 
ship, look no further than 
Tall Tree Systems. 

We have a history of 
being first. 

We were the first to 
introduce bankswitching. 

The first with two megabyte 
memory boards. The first 
with I/O modularity in a 
single slot. The first with 
8 MHz speed capabilities. 

The only maker of single 

CIRCLE NO. 197 ON READER SERVICE CARD 

©1986 by Tall Tree Systems. All rights reserved. IBM, RT are registered trademarks of International Business Machines Corp. 

Canon and Ricoh are registered trademarks of Canon Corp. and Ricoh Corp., respectively. 


command EMS boards. 

The first with a laser printer 
solution — J LASER — that 
allows you to do full-page 
graphics and multiple type 
fonts on any Canon® or 
Ricoh® laser engine. 


Now, we're first again 
with memory expansion for 
the IBM®RT. 

Innovation is our tradition. 

Our trademark is supe¬ 
rior technology at the lowest 
possible price. 


Ipw. TREE SYSTEMS 

1120 San Antonio Road • Palo Alto, CA 94303 • (415) 964-1980 














PrTERM, a multitenninal emulator from Crystal Point, Inc. 


TECH RELEASES 



Lotus Express for MC! Mail from Lotus and MC! 


sity of California) Berkeley SPICE2G.6 
and includes extensions, such as GaAs 
MESFET modeling. $950. 

MicroSim Corporation, 23175 La 
Cadena Drive, Laguna Hills, CA 92653; 
800/826-8603, in California, 
714/770-3022 

CIRCLE 326 ON READER SERVICE CARD 

Data Access Corporation has an¬ 
nounced FlexTools, a comprehensive 
toolkit for developers who use Dataplex, 
the company’s relational database devel¬ 
opment system. Included with FlexTools 
are flexhelp, a pop-up help utility; flex- 
change, a utility that allows the pro¬ 
grammer automatically to change, add, 
or remove field or index information 
in DataFlex files; strip, a utility that re¬ 
moves all comments and blank lines 
and left-justifies all lines of source code, 
which renders the code difficult to read, 
yet compilable; relocate, a file-manage¬ 
ment utility; FTXREF, a cross-reference 
utility; and ftref 2 , a source code file 
search utility. The revamped menu envi¬ 
ronment lets the user define as many as 
24 selections per menu; in addition, the 
system detects when a menu has more 
than 12 selections and automatically 
splits the screen. $195. 

Data Access Corporation, 8525 S.W. 
129th Terrace, Miami, FL 33156; 
305/238-0012 

CIRCLE 329 ON READER SERVICE CARD 

Lotus Development Corporation 
and MCI Communications Corpora¬ 
tion have announced their plans to 
jointly market Lotus Express for MCI 
Mail, a communications product that 
makes possible quick and reliable ex¬ 
change of any binary 7 file. The integrated 
program gives the user a Lotus interface 
to the MCI Mail network and its full 
range of electronic and off-network de¬ 
livery options, along with on-line help 
and mail-management facilities. The 
program lets users compose, read, send, 
file, archive, and print electronic mail 


directly from their PCs. Lotus Express 
can run in the background or as a stand¬ 
alone program. $100. 

Lotus Development Corporation, 

161 First Street, Cambridge, 

MA 02142; 617/577-1100 

CIRCLE 341 ON READER SERVICE G\RD 

MCI Communications Corporation, 

2000 M Street NW, Suite 300, Washing¬ 
ton, DC 20036; 800/624-2255; in Wash¬ 
ington, 202/833-8484 

CIRCLE 321 ON READER SERVICE CARD 

A multiline bulletin board system called 
DXL has been introduced by Inner 
Loop Software. This product supports 
as many as nine telephone lines in addi¬ 
tion to a user at the keyboard. The sys¬ 
tem operator can customize the system 
to the application without programming. 
DXL provides private and public elec¬ 
tronic mail, user-to-user mode, and file 
uploading and downloading using ASCII 
and XMODEM protocols. System opera¬ 
tors can assign up to ten account secu¬ 
rity levels. Two-line version, $200. 

Inner Loop Software, 5456 McConnell 
Avenue, Suite 120, Los Angeles, CA 
90066; 213/822-2800 
CIRCLE 322 ON READER SERVICE CARD 

^ c term 3.1, a multiterminal emulator, 
has been announced by Crystal Point, 
Inc. /^term is designed to communicate 
with a wide spectrum of computers and 
information services; it currently emu¬ 
lates 15 asynchronous terminals includ¬ 
ing the IBM 3101. z^term can be custom 
programmed to create unique menu en¬ 
vironments; its programming language 
has more than 80 communications-re- 
lated commands that allow this product 
to emulate not only a terminal, but an 
operator as well, for repetitive data 
entry. It can be programmed for unat¬ 
tended data transfers with full error- 
recovery capability and conditional test¬ 
ing based on response, z^term also per¬ 
mits unattended remote access to files 
on the PC, and remote users of z^term 


and other communications packages can 
upload and download files from an un¬ 
attended PC. /^term is IBM TopView and 
Microsoft Windows aware; it can be run 
as a background task permitting remote 
access, z> c term also is featured on the 
Ungermann-Bass Net/One Async PC 
network (see Hardware). $250. 

Crystal Point, Inc., 12221 N.E. 140th 
Kirkland, WA 98034; 206/821-1909 

CIRCLE 336 ON READER SERVICE CARD 

Dasoft Design Systems, Inc. has an¬ 
nounced a CAD package for engineers. 
Project: PCB provides complete sche¬ 
matic capture, board layout, and auto¬ 
routing capabilities. Graphics options in¬ 
clude Hercules monochrome, IBM CGA, 
and IBM EGA with monochrome or 
color monitor. A system mouse is re¬ 
quired, and a wide variety of plotters is 
supported. Special features include 
user-definable schematic and silk-screen 
symbols; user-definable footprints to 
hoo-inch accuracy; block move, copy, 
and delete functions; screen display of 
unrouted traces on the board; a tag-and- 
drag function in interactive routing 
mode; four-layer boards (two signal 
layers, plus internal planes); single-net 
or full-board autorouting; routines for 
producing net lists, parts lists, and hole 
lists; plot routines for camera-ready art¬ 
work; and optional predefined libraries 
of parts and symbols. $950. 

Dasoft Design Systems, Inc., P.O. Box 
8088, Berkeley’, CA 94707-8088; 
415/486-0856 

CIRCLE 323 ON READER SERVICE CARD 

Command Plus version 1.1 has been 
announced by ESP Software Systems, 

Inc. Created as a programming environ¬ 
ment for DOS, Command Plus features 
an aliasing command, which allows the 
user to create fast, memory-resident 
command macros; a history command, 
which lets the user edit and execute 
commands that were run as many as 48 
command lines before; disk-manage- 


38 


PC TECH JOURNAL 

















A Challenge to Microsoft® C... 

We challenge Microsoft C (Ver 4.0) to a C compiler duel to the finish, measuring compile, link, 
and execution times. If they win, we will stop advertising for two months. 


by Roy Sherrill 

If Microsoft C (Ver 4.0) can beat 
Optimum-C then we will stop advertis¬ 
ing in all magazines for two full months 
and, win or lose, we will publish the 
results in its entirety. Even the Micro¬ 
soft ads say “The Fastest C youVe ever 
seen/’ so let the challenge begin. 

Walter says Optimum-C is better 

It all started when Walter Bright, the 
developer of Optimum-C, was explaining his 
new global optimizing C compiler and how 
it’s code would be faster than Microsoft C 
(Ver. 4.0). Walter and I were frustrated 
because here we had a C compiler that would 
beat Microsoft C on 7 out of 10 benchmarks 
and also compile and link faster; yet our mar¬ 
keting consultant, Mark Astengo, told us that 
Microsoft C had a lock on the C compiler 
market and by 1990 they would probably have 
an 80% market share. Then Mark said, “Roy, 
if your C compiler is as fast as you say it is, 
why not challenge Microsoft C to a duel? If 
Microsoft wins, Datalight should stop adver¬ 
tising for two months and print the results of 
the test, win or lose.” Well, I’ve always been 
one for a challenge. So here it is... 

We only ask the following... 

The benchmark suite will consist of the set 
of programs that Microsoft supplied to 
Computer Language for their February 1987 C 
compiler review issue. Microsoft will make 
available the programs to Datalight at least 
two weeks prior to the benchmarking. The 
benchmarking will be between Microsoft C 
4.0 and Optimum-C. It will occur at a mutu¬ 
ally agreed upon time and place. Interested 
individuals will be allowed to attend. The 
benchmarks will be compiled and run on a 
standard IBM PC-AT. 

There will be two separate tests for each 
program: compile and link speed, and execu¬ 
tion speed. For each test, a representative 
from each company will set up the compiler 
so that it performs at its best. 

The benchmarks will be adjusted so that 
they take sufficiently long to run, that the 
tolerance involved in timing them is insig¬ 
nificant. The winner is determined by the 
compiler with the faster execution times for 
the majority ofthe benchmarks. We’d like an 
answer from Microsoft no later than April 1, 
1987. 

So what’s a global optimizer? 

A global optimizer looks at an entire 
function at once, analyzing and optimizing 
the whole function. A technique called data 
flow analysis is used by Optimum-C to gather 
information about each function. This en¬ 
ables your compute-bound programs to exe¬ 
cute as much as 30% faster after global 
optimization. But, there is one catch...because 
the global optimizer ruthlessly searches for 


ways to speed-up execution speed and mini¬ 
mize memory usage, it has relatively slow 
compile times. No need to worry, though, 
because you can merely turn the global opti¬ 
mizer off. In fact, you can select all, none, or 
partial of the following optimizations: con¬ 
stant propagation, copy propagation, dead 
assignment elimination, dead variable elimi¬ 
nation, dead code elimination, do register 
optimizations, global common subexpression 
elimination, loop invariant removal, loop 
induction variables, optimize for space, 
optimize for time, very busy expressions. 

Choose from five memory models 

Speed your programs by selecting the mem¬ 
ory model that best suits your application. 


Memory Models 

Model Code Data 


Compact 

64k total code & data 

Small 

64k 

64k 

Program 

1M 

64k 

Data 

64k 

1M 

Large 

1M 

1M 


Compiling, one step... 

Now with the one step DLC program you 
can create .OBJ, .EXE and .COM files. Also, 
DLC can handle multiple files and run MASM 
on your assembly files. 

Try Optimum-C risk free 

Try Optimum-C for 30 days and if you are 
not 100% satisfied return it for a full refund. 
Also, for a limited time we are including a 
*free C tutorial which is a combination 
workbook and floppy disk to help lead you 
through the C language with tutorials, 
quizzes, and program exercises. 

O.K. Microsoft, it’s up to you. We’ve put 
two months of advertising on the line that says 
you can’t beat Optimum-C to a real test. Your 
answer, please? 

PRICES 

Developer’s Kit still only $99 

Optimum-C $139 

(includes library source code) 

Add $5 for shipping in US/$15 outside US 
COD (add $2.50) 

Not Copy Protected 

■ 

ORDER TOLL-FREE TODAY! 

1-800-221-6630 


Microsoft and MS-DOS are registered trademarks 
of the Microsoft Corporation. 


Magazine Reviewers Shocked by 
DATALIGHT’s Performance... 

“Reviewing this compiler was quite a surprise 
for us. For such a low price, we were expecting 
a “lightweight” compiler. What we got was 
a package that is as good as or better than 
most of the “heavyweights.” Datalight C 
implements a complete C language. It also 
compiles quickly, doesn’t take up much disk 
space, and looks impressive in the 
benchmarks.” 

DR. DOBBS , August 1986 

“This is a sharp compiler!... what is impres¬ 
sive is that Datalight not only stole the com¬ 
pile time show completely, but had the fastest 
Fibonacci executable time and had excellent 
object file sizes to boot!” 

COMPUTER LANGUAGE , February 1986 


Optimum-C Version 3.0 

♦ Full UNIX System 5 C language plus 
ANSI extensions 

♦ Fast/tight code via powerful optimizations 
including common sub-expression 
elimination 

♦ DLC one-step compile/link program 

♦ Multiple memory model support 

♦ UNIX compatible library with PC functions 

♦ Compatible with DOS linker and assembler 

♦ Third-party library support 

♦ Automatic generation of .COM files 

♦ Supports DOS pathnames, wild cards, 
and Input/Output redirection 

♦ Compatible with Lattice C version 2.x 

♦ Interrupt handling in C 

♦ Debugger support 

♦ ROMable code support/start-up source 

MS-DOS® Support Features 

♦ Mouse support 

♦ Sound support 

♦ Fast screen I/O 

♦ Interrupt handler 

MAKE Maintenance Utility 

♦ Macro definition support 

♦ MS-DOS internal commands 

♦ Inference rule support 

♦ TOUCH date manager 

Tools in Source Code 

♦ cat—UNIX style “type” 

♦ diff—Text file differences 

♦ fgrep—fast text search 

♦ pr—Page printer 

♦ pwd—Print working directory 

♦ wc—Word count 


Datalight 

Box 82441 

Kenmore, Washington 98028 
(206) 367-1803 

* Limited offer available exclusively to readers who 
purchase directly from Datalight. 



CIRCLE NO. 107 ON READER SERVICE CARD 








Command Plus programming environment from PSP Softirare Systems 



Screen from Personal Consultant Plus (PC Plus) from Texas Instruments 


ment utilities, which contain options to 
process subdirectories recursively, sort 
files, and specify multiple source files; 
BROWSE, a full-screen hie viewer with 
regular expression searching and IBM 
EGA 43-line support; command line 
editing with user-definable editing keys; 
and the ability to create multiple com¬ 
mands and arguments on a line. $79-95. 
ESP Software Systems, Inc., 11965 
Venice Blvd., Suite 309, Los Angeles, CA 
90066; 800/992-4377; in California, 
213/390-7408 

CIRCLE 325 ON READER SERVICE CARD 

A BASIC programmer’s package has 
been introduced by MicroHelp, Inc. 
Sta-Res makes compiled BASIC pro¬ 
grams memory-resident, such that they 
can be invoked by pressing a selectable 
hot key. For machines that use DOS 3-0 
or later plus an expanded/extended 
memory board, adding the EMS/RAM 
disk module ensures that each memory- 
resident program takes only 7KB of 
DOS memory, and the balance of the 
program is swapped in and out of mem¬ 
ory as needed. Included in the program 
is a SHELL facility that allows the user to 
execute any program, even other BASIC 
programs and the BASIC interpreter. 
Sta-Res is not copy protected, and no 
royalties are imposed when Sta-Res- 
assisted programs are distributed as 
a part of executable programs. $95; 
EMS/RAM disk module, $50. 

MicroHelp, Inc., 2220 Carlyle Drive, 
Marietta, GA 30062; 404/973-9272 

CIRCLE 339 ON READER SERVICE CARD 

Big Bang Software, Inc. has released 
an MC68000/68010 Simulator/De¬ 
bugger for the PC. The package enables 
the user to test and debug 68000/10 
software on the PC; hexadecimal files of 
Motorola S-Records can be disassem¬ 
bled and displayed. Instructions can be 
executed in fast or single-step mode, 
and the results of each executed instruc¬ 
tion on registers, flags, and 68000/10 


memory are immediately available for 
display. During single-stepping, the dis¬ 
play shows the last instruction executed, 
the current contents of all registers, and 
the instruction following the last exe¬ 
cuted. All 68000/10 instructions, address¬ 
ing modes, and condition codes are 
fully supported. Load, dump, and break¬ 
point facilities are included. $285. 

Big Bang Software, Inc., P.O. Box 879, 
Panama City, FL 32402; 904/784-3393 

CIRCLE 333 ON READER SERVICE CARD 

The Personal Consultant Series, a 

family of expert system development 
tools is being offered by Texas Instru¬ 
ments (TI). Personal Consultant 
Easy is designed for users just begin¬ 
ning in expert system development, and 
it features high functionality for rapid 
prototyping of small- to medium-sized 
expert system applications. Personal 
Consultant Plus (PC Plus), a more 
powerful member, is designed to take 



Screen from Tl's Personal Consultant Pay' 

advantage of PC/AT-class machines. PC 
Plus provides extended knowledge- 
representation features, increased rule 
capacity, and access to LISP, thus pro¬ 
viding sophisticated developers the flex¬ 
ibility to customize their applications. 
Knowledge bases created with Personal 
Consultant Easy are upwardly compat¬ 
ible with PC Plus. Applications devel¬ 
oped under either product can be deliv¬ 
ered on microcomputers with the addi¬ 
tion of an optional runtime diskette. 


Personal Consultant Easy, $495; PC Plus, 
$2,950; demo diskette, $25; runtime 
diskettes, $95 each or $995 for 20, PC 
Scheme (TI’s LISP compiler), $95. 

Texas Instruments, Data Systems Group, 
A1 Software Marketing Department, M/S 
2244, P.O. Box 2909, Austin, TX 78769- 
2909; 800/527-3500 

CIRCLE 331 ON READER SERVICE CARD 

Unicom Systems Company has an¬ 
nounced that MicroCICS for the PC-370 
now supports CICS release 1.7. Micro¬ 
CICS, provides a full CICS development 
environment, allows programmers to 
enter, compile, test, debug, and execute 
CICS applications without accessing the 
mainframe until the completed code is 
ready for uploading. MicroCICS support 
for CICS 1.7 includes modifications to 
the Command Language Translator, 
Command Routines, and debugging 
tools that provide integrated support for 
release 1.7 features. MicroCICS also can 
be used to write programs compatible 
with CICS 1.5 or 1.6. 

MicroCICS will interpret and exe¬ 
cute applications according to the fea¬ 
tures supported by the CICS release that 
the programmer selects. It allows devel¬ 
opment of command-level CICS COBOL 
and assembly language source programs 
outside the mainframe environment. 
MicroCICS includes on-line screen gen¬ 
eration and automatic creation of basic 
mapping support (BMS) maps, creation 
and maintenance of test data hies, pro¬ 
gram execution and testing using a pow¬ 
erful symbolic debugger, and host com¬ 
munications for program uploading and 
downloading. PC-370, $4,495. 

Unicom Systems Company, 3807 Wil- 
shire Blvd., Los Angeles, CA 90010; 
213/380-6974 

CIRCLE 340 ON READER SERVICE CARD I mmiinii 


The material that appears in Tech Releases is 
based on vendor-supplied information. These 
products have not been reviewed by the PC 
Tech Journal editorial staff. 


40 


PC TECH JOURNAL 






























Unbiased Advice. 


Our friendly, non-commissioned salespeople are always prepared to 
assist you. We also have experienced technical consultants who can 
answer questions, help you compare products and send you detailed 
product information tailored to your needs. Since we're not affiliated 
with any software publisher or manufacturer, we'll give you an unbiased 
look at the products we carry. 



High Quality. 


We stock hundreds of high quality software development tools 
specifically for IBM personal computers and compatibles. And as new 
products become available, we'll sell only those that meet our high 


standards for quality and value. 


Manufacturer Support. 


The products we sell are the latest versions and come with the same 
technical support as if buying directly from the manufacturer. 


Return Guarantees. 


Our goal is customer satisfaction and that's why we offer a 30-day 
documentation evaluation period or a 30-day return guarantee on most 
of our products. Please call for specific details. 


Immediate Shipment. 


Most products are in stock and are ready for shipment from our large 
inventory. 


Discounts. 


You'll save money on all of your software purchases from Programmer' 
Connection. Our ads show both the discount and retail prices for eacl 
product so you'll always know exactly how much you'll save. 



FREE Shipping 


Shipping is FREE if you have your order shipped via standard UPS 
anywhere in the USA. We can also express your order to you with no 
special fees and we'll only charge you the shipping carrier's standard 
rate. Many other companies profit from overcharges plus special fees 
for express shipments. 


Credit Cards. 



We'll charge your credit card at the time we ship your order. Other 
companies may charge your credit card at the time they take your order 
so they can use your money interest-free while you wait for your 
shipment. 


No Sales Tax. 


Customers outside of Ohio are not charged state sales tax. Ohio res¬ 
idents are charged 6 percent. 


No Hidden Charges. 


Quite simply, the prices you see on the next two pages are all you pay. 
We don't charge extra for standard UPS shipping, credit cards, COD 
orders, purchase orders or special handling. 



Turn the page for our latest advertised price list. 






apl language 

APL*PLUS/PC bySTSC . 595 429 

APL*PLUS/PC Spreadsheet Mgr by STSC. . . 195 139 

APL*PLUS/PC Tools Vol 1 by STSC . 295 199 

APL*PLUS/PC Tools Vol 2 by STSC . 85 59 

Financial/Statistical Library by STSC . 275 195 

Pocket APL bySTSC . 95 69 

STATGRAPHICS bySTSC . 795 579 

artificial intelligence 

Ist-CLASS by Programs in Motion . 495 399 

APT from Solution Systems . 65 CALL 

Arity Combination Package. 1225 1119 

Expert System Development Pkg. 295 259 

File Interchange Toolkit. 50 45 

PROLOG Compiler & Interpreter. 795 699 

Screen Design Toolkit. 50 45 

SQL Development Package. 295 259 

Arity PROLOG Interpreter. 350 309 

Arity Standard Prolog . 95 79 

Autointelligence byIntelligenceWare . 990 CALL 

ExpertEDGE Advanced by Human Edge . 2500 CALL 

ExpertEDGE Professional by Human Edge .... 5000 CALL 

Experteach II by IntelligenceWare . 475 359 

EX SYS Development Software by EXSYS . 395 319 

EXSYS Runtime System . New 600 479 

G C LIS P Golden Common LISP by Gold Hill . 495 CALL 

GCLISP 286 Developer by Gold Hill . 1190 CALL 

Insight 1 by Level Five Research . 95 75 

Insight 2+ by Level Five Research . 485 379 

Intelligence/Compiler IntelligenceWare . 990 749 

Logic-LinegSeries 1 by Thunderstone . 90 85 

Logic-Line^Series 2 by Thunderstone . 125 115 

Logic-Line Series 3 by Thunderstone . 150 139 

LPA microPROLOG All Varieties . CALL CALL 

Microsoft LISP Common LISP . 250 163 

MPROLOG Language Primer LOGICWARE New 50 45 

MPROLOG P500 byLOGICWARE . New 495 395 

MPROLOG P550 by LOGICWARE . New 220 175 

PC Scheme by Texas Instruments . 95 84 

Personal Consultant Easy byTI . 495 435 

Personal Consultant Plus byTI . 2950 2589 

Personal Consultant Runtime. 95 85 

QNIAL byNIAL Systems . 375 349 

TransLISP from Solution Systems . 95 CALL 

TransLISP PLUS from Solution Systems . . . New 195 CALL 

Turbo PROLOG by Borland Inti . . . .New Version 100 65 

assembly language 

386 ASM/LINK Cross Asm by Phar Lap . 495 389 

8088 Assembler w/Z-80 Trans by 2500 AD ... . 100 89 

ASM LIB Function Library by BC Assoc . 149 129 

asmTREE B-Tree Dev System by BC Assoc . 395 339 

Cross Assemblers Various by 2500 AD . CALL CALL 

Microsoft Macro Assembler. 150 95 

Norton Utilities by Peter Norton . 100 59 

Turbo EDITASM by Speedware . 99 84 

Uniware Cross Assemblers Various by SDS . . . 295 249 

Visible Computer: 8088 Software Masters .... 80 65 

basic language 

BetterBASIC by Summit Software . . . . Clearance 200 119 

EXIM Services Toolkit byEXIM . CALL CALL 

Finally by Komputerwerks . 99 85 

Inside Track from Micro Help . 65 51 

MACH 2 by Micro Help . 75 59 

Microsoft QuickBASIC. 99 65 

87 QB Pak byHauppauge . New 69 59 

Peeks 'n Pokes from MicroHelp .. 45 37 

Professional BASIC by Morgan . 99 75 

8087 Math Support. 50 42 

Stay-Res by MicroHelp . 95 74 

True Basic. New Version 150 99 

True Basic w/Run-time . 245 179 

BASICA Converter. 50 45 

Run-time Module. 150 99 

Various Other Utilities . 50 45 

Turbo BASIC by Borland Inti . New 100 69 

blaise products 

ASYNCH MANAGER Specify C or Pascal . 175 124 

C TOOLS PLUS. 175 124 

EXEC Program Chainer . 95 75 

LIGHT TOOLS forDatalight C . New 100 89 

PASCAL TOOLS. 125 99 

PASCAL TOOLS 2 . 100 79 

PASCAL TOOLS & PASCAL TOOLS 2. 175 124 

RUNOFF Text Formatter . 50 45 

TURBO ASYNCH PLUS. 100 79 

TURBO POWER TOOLS PLUS . 100 79 

VIEW MANAGER Specify C or Pascal . 275 189 

borland products 

EUREKA Equation Solver . New 100 69 

REFLEX & REFLEX Workshop. 200 129 

REFLEX Data Base System . 150 89 

REFLEX Workshop. 70 45 

Turbo BASIC. New 100 69 

Turbo DATABASE TOOLBOX . 70 47 

Turbo EDITOR TOOLBOX. 70 47 

Turbo GAMEWORKS TOOLBOX. 70 47 

Turbo GRAPHIX TOOLBOX. 70 47 

Turbo LIGHTNING . 100 64 

Turbo Numerical Methods Library. New 100 69 


Turbo PASCAL and TUTOR. New 125 85 

Turbo PASCAL with 8087 and BCD . 100 64 

Turbo TUTOR. 40 28 

Turbo Prolog Compiler. New Version 100 64 

Turbo Prolog Toolbox. New 100 64 

Word Wizard. 70 47 

Word Wizard and Turbo Lightning. 150 94 

C++ 

C ++ by Guidelines w/kernel l.f . 195 179 

PforCe++ Library for C++ by Phoenix . New 395 229 

c compilers 

68000/10/20 Cross Compiler by SDS . 595 CALL 

C86PLUS by Computer Innovations . New 497 CALL 

Datalight C Compiler Small Model . 60 49 

Datalight Developer Kit. 99 79 

Datalight Optimum-C. New 139 119 

DeSmet C w/Debugger . 159 138 

DeSmet C w/Debugger & Large Case . 209 184 

Eco-C Development System by Ecosoft . 125 83 

Lattice C Compiler from Lattice . 500 275 

Mark Williams Let's C Combo Pack ... New 125 99 

Let's C Compiler . 75 57 

csd Source Level Debugger . 75 57 

Mark Williams MWC-86 . 495 289 

Microsoft C with CodeView . 450 275 

Wizard C Combo by Wizard Systems . 750 529 

Wizard C Compiler. 450 299 

ROM Development Pkg. 350 259 

c interpreters 

C-terp by Gimpel. Specify compiler . 300 235 

C Trainer with Book by Catalytix . 122 87 

Instant C by Rational Systems . 500 379 

Introducing C by Computer Innovations . 125 CALL 

Run/C from Lifeboat . 150 88 

Run/C Professional from Lifeboat . 250 159 

c utilities 

C Essentials by Essential Software . 100 75 

C-ISAM by Informix . 225 195 

C to dBase by Computer Innovations . 150 CALL 

c-tree & r-tree Combo byFairCom . 650 529 

c-tree ISAM File Manager . 395 329 

r-tree Report Generator . 295 249 

C Utility Library by Essential . 185 135 

C Windows bySyscom . 100 85 

C Wings bySyscom . 50 43 

Cl ROMPac by Computer Innovations . 195 CALL 

dbQU ERY AH Varieties by Raima . CALL CALL 

dbVISTA Single-User DBMS by Raima . 195 155 

with Source Code . 495 425 

dbVISTA Multi-User DBMS by Raima . 495 425 

with Source Code . 990 845 

dBx dBase/C Translator by Desktop At . 350 314 

with Library Source Code . 550 493 

Entelekon Combo Package. 200 169 

C Function Library. 130 109 

C Windows . 130 109 

Superfonts for C. 50 43 

Essential Comm Library w/Debugger . 250 195 

Breakout Debugger Any language . 125 99 

Essential Comm Library. 185 135 

Essential Graphics by Essential Software . 250 195 

Flash-up Windows by Software Bottling . 90 79 

Graphic Mono v2.2 by Sci Endeavors . 280 209 

Graphic Color v3.0 by SciEndeavors . 350 284 

GRAFLIB by The Librarian . 175 CALL 

Greenleaf Comm Library by Greenleaf . 185 127 

Greenleaf Data Windows by Greenleaf . 225 157 

with Source Code . 450 295 

Greenleaf Functions by Greenleaf . 185 127 

HALO by Media Cybernetics . 300 209 

HALO Development Pkg for Microsoft . . . New 595 395 

The HAMMER by OES Systems . 195 139 

HELP/Control byMDS . 125 109 

MetaWINDOWS No Royalties . 185 115 

MetaFONTS. 80 58 

MetaWINDOWS/Plus by Metagraphics . 235 189 

MetaFONTS/Plus. 235 189 

PANELS/ Roundhill Computer Systems . 295 215 

PC Lint by Gimpel Software . 139 99 

P LOTH I by The Librarian . 175 CALL 

PLOTHP by The Librarian . 175 CALL 

Scientific Subroutine Lib by Peerless . 175 134 

screenplay byFlexus . 175 129 

Vector87 by Vectorplex Data Systems . 150 135 

Vitamin C by Creative Programming . 225 CALL 

VC Screen Forms Designer . 100 82 

Zview by Data Management Consultants . 245 189 

cobol language 

Micro Focus COBOL Workbench. 4000 CALL 

Micro Focus Level II COBOL. 1500 CALL 

COGRAPHICS . 250 CALL 

COMATH. 200 CALL 

FORMS-2 . 300 CALL 

Level II Animator. 900 CALL 

Level II SOURCEWRITER. 2000 CALL 

Micro Focus Level II COBOL for Novell . 2000 CALL 

Micro Focus Professional COBOL. 3000 CALL 

Multi-user Runtime for PC Network . 500 CALL 


Microsoft COBOL See Microsoft Section . CALL CALL 

Realia COBOL. 995 785 

Realia CICS. New 995 785 

RM/COBOL by Ryan-McFarland . 950 639 

RM/COBOL856/ Ryan-McFarland . 1250 895 

screenplay by Flexus . 175 129 

debuggers Si profilers 

386 DEBUG Cross Debugger by Phar Lap . 195 129 

Advanced Trace-86 by Morgan Computing .... 175 125 

Cl Probe by Computer Innovations . 225 CALL 

Codesifter Profiler by David Smith . 119 94 

Codesmith-86 by Visual Age . 145 99 

DSD86 by Soft Advances . 70 61 

DSD87 by Soft Advances . 100 79 

MiniProbe by Atron . New 395 CALL 

Periscope I by The Periscope Company . 345 CALL 

Periscope II w/NMI Breakout Switch . 175 CALL 

Periscope ll-X Software only . 145 CALL 

The PROFILER with Source Code by DWB . 125 89 

The WATCHER Profiler by Stony Brook . 60 51 

forth language 

CFORTH Native Code Compiler by LMI . 300 229 

Forth/83 Metacompiler Specify Target . 750 599 

PC/Forth by Laboratory Microsystems . 150 109 

PC/Forth+ by Laboratory Microsystems . 250 199 

Advanced Color Graphics Support. 100 74 

Enhanced Graphics Support. 200 148 

Intel 8087 Support . 100 74 

Interactive Symbolic Debugger. 100 74 

Native Code Optimizer. 200 148 

Software Floating Point. 100 74 

UR/Forth and support utilities by LMI . CALL CALL 

fortran language 

50 MORE: FORTRAN by Peerless Engr . 125 95 

ACS Time Series Alpha Computer Service . 495 399 

Btrieve ISAM File Mgr by SoftCraft . 245 194 

Essential Graphics by Essential Software . 250 195 

For-Winds Alpha Computer Service . 90 69 

Forlib-Plus Alpha Computer Service . 70 49 

FORTLIB by Sutrasoft . 95 CALL 

FORTRAN Addenda by Impulse Engr . 95 85 

FORTRAN Addendum by Impulse Engr . 165 139 

GRAFLIB by Sutrasoft . 175 CALL 

HALO by Media Cybernetics . 300 209 

I/O PRO byMEFEnvironmental . 149 129 

Microcompatibles Combo Package. 240 219 

Grafmatic . 135 119 

Plotmatic. 135 119 

Microsoft FORTRAN w/CodeView - New Version 450 CALL 

No Limit by MEF Environmental . 129 115 

PANEL Screen Designer by Roundhill . 295 215 

PLOTHUy Sutrasoft . 175 CALL 

PLOTHP by Sutrasoft . 175 CALL 

RM/FORTRAN Ryan-McFarland . 595 CALL 

Scientific Subroutine Lib by Peerless . 175 134 

Statistician Alpha Computer Service . 295 245 

Strings & Things Alpha Computer Service . 70 51 

Vector87 by Vectorplex Data Systems . 150 135 

lattice products 

Lattice C Compiler from Lattice . 500 275 

with Library Source Code . 900 495 

C Cross Reference Generator. 50 37 

with Source Code . 200 145 

C-Food Smorgasbord Function Library . 150 95 

with Source Code . 300 184 

C-Sprite Source Level Debugger . 175 129 

Curses Screen Manager . 125 89 

with Source Code . 250 178 

d B C dBase File Manager for C . 250 178 

with Source Code . 500 356 

LMK Make Facility . 195 139 

RPG II Compiler No Royalties . 750 626 

RPG II Combo with SEU & Sort/Merge . 1100 939 

RPG II Screen Design Aid Utility. New 350 309 

SecretDisk File Encryption Utility . 120 89 

S i d e T a I k Resident Communications . 120 89 

SSP/PC Scientific Library . New 350 269 

Text Management Utilities. 120 89 

TopView Toolbasket Function Library . 250 178 

with Source Code . 500 356 

logitech products 

LOGIMOUSE C7 Specify Connector Type . 99 83 

with PLUS Pkg . 119 98 

with PLUS & PC Paintbrush . 169 134 

with PLUS & CAD Software . 189 153 

with PLUS & Reflex . 199 162 

with PLUS 8, CAD & Paint . 219 179 

with PLUS & CAD & Paint & Reflex . 299 245 

LOGIMOUSE BUS with PLUS Pkg . New 139 115 

with PLUS & PC Paintbrush . New 189 149 

with PLUS & CAD Software . New 209 175 

with PLUS & Reflex . New 219 179 

with PLUS & CAD & Paint . New 239 195 

with PLUS & CAD & Paint & Reflex . New 319 259 

MODULA-2/86 Holiday Package. 199 159 

MODULA-2/86 Compiler. 89 62 

MODULA-2/86 with 8087 Support. 129 98 











































































































































































































































































MODULA-2/86 with PLUS Pkg. 189 138 

Library Sources. 99 88 

Make Utility. 29 25 

ROM Package . 199 172 

Run Time Debugger. 69 56 

Turbo to Modula Translator. 49 42 

Utilities Package. 49 42 

Window Package . 49 42 

REPERTOIRE for MODULA-2/86 byPMI . 89 79 

Object Code Only . New 19 15 

microport products 

System V/AT by Microport Systems . 440 395 

Runtime System (Operating System) . 159 145 

Software Development System. 169 155 

Text Preparation System. 169 155 

User Upgrade 3 to Unlimited Users . 169 155 

microsoft products 

Microsoft BASIC Interpreter for XENIX . 350 239 

Microsoft C with CodeView . 450 275 

Microsoft COBOL Compiler. 700 439 

for XENIX . 995 635 

Microsoft COBOL Tools with Debugger . 350 CALL 

for XENIX . 450 289 

Microsoft FORTRAN w/CodeView - New Version 450 CALL 

for XENIX . 695 439 

Microsoft Learning DOS. 50 36 

Microsoft LISP Common USP . 250 163 

Microsoft MACH 10 w/Mouse& Windows .... 549 385 

Microsoft MACH 10 Board only . 399 285 

Microsoft Macro Assembler. 150 95 

Microsoft Mouse Bus Version . 175 114 

Microsoft Mouse Serial Version . 195 124 

Microsoft muMath Includes muSIMP . 300 184 

Microsoft Pascal Compiler. 300 184 

for XENIX . 695 439 

Microsoft QuickBASIC. 99 65 

Microsoft Sort. 195 129 

Microsoft Windows. 99 65 

Microsoft Windows Development Kit. 500 309 

other languages 

CCS MUMPS Single-User by MGIobal . 60 51 

CCS MUMPS Single-User/Mu/ti-Tasking. . . New 150 129 

CCS MUMPS Multi-User . 450 369 

Janus/AD A C Pack by B&R Software . 95 89 

Janus/ADA D Pack by R&R Software . 900 769 

Personal REXX by Mansfield Software . 125 99 

Smalltalk/V byDigitalk . 99 84 

EGA Color Option. New 49 45 

Goodies Diskette. New 49 45 

Smalltalk/Comm. 49 45 

SN0B0L4+ byCatspaw . 95 80 

other products 

Compact Source Print byAldebaran .... New CALL CALL 

Dan Bricklin's Demo Pgm Software Garden ... 75 59 

FANSI-CONSOLE by Mersey Micro . 75 65 

FASTBACK by 5th Generation Systems . 179 135 

Informix for DOS by Informix . 795 639 

lnformix4GL for DOS by Informix . 995 789 

InformixSQL for DOS by Informix . 795 639 

Instant Replay by Nostradamus . 90 79 

Interactive EASYFLOW byHaventree . 150 129 

MKS Toolkit with viby MKS . 139 119 

Norton Commander by Peter Norton . 75 55 

On-line Help from Opt-Tech Data Proc . 149 109 

OPT-Tech Sort by Opt-Tech Data Proc . 149 115 

PrintQ by Software Directions . 89 84 

Quilt Computing Combo Package. 199 159 

QMake Program Rebuild Utility . 99 84 

S R M S Software Revision Mgmt Sys . 125 109 

SoftScreen/HELP by Dialectic Systems . 195 149 

Source Print byAldebaran Labs . CALL CALL 

Taskview by Sunny Hill Software . 80 56 

TLIB by Burton Systems Software . 100 89 

Tree Diagrammer by Aldebaran Labs . CALL CALL 

VTEK Term Emulator by Sci Endeavors . 150 129 

phoenix products 

Pasm86 Macro Assembler Version 2.0 . 195 115 

Pdisk Hard Disk & Backup Utility . 195 125 

Pfantasy Pac Phoenix Combo . 1295 849 

Pfinish Performance Analyzer . 395 229 

Pfix-86 Plus Symbolic Debugger . 395 229 

PforCe Comprehensive C Library . 395 229 

Plink-86 Plus Overlay Linker . 495 319 

Pmaker Make Utility . 125 78 

Pmate Macro Text Editor . 195 115 

Pre-C Lint Utility . 295 155 

Ptel Binary File Transfer Program . 195 115 


polytron products 

PolyBoost The Software Accelerator . 

Polytron C Beautifier. 

Polytron C Library I. 

Polytron PowerCom Communications . 

PolyLibrarian Library Manager . 

PolyLibrarian II Library Manager . 

PolyMake UNIX-like Make Facility . 

PolyShell . New 

PolyWindows Products All Varieties . 

PolyXREF Complete Cross Ref Utility . 

PolyXREF One language only . 

PVCS Version Control System . 

softcraft products 

Btrieve ISAM Mgr with No Royalties . 

Xtrieve Query Utility . 

Report Option. 

Btrieve/N for Networks .. 

Xtrieve/N. 

Report Option/N. 

text editors 

Brief from Solution Systems . 

Epsilon Emacs-like editor by Lugaru . 

KEDIT by Mansfield Software . 

Micro/SPF by Phaser Systems . New 

PC/VI by Custom Software Systems . 

SPF/PC by Command Technology Corp . 

Vedit by CompuView . 

Vedit Plus by CompuView . 

turbo pascal utilities 

ALICE Interpreter by Software Channels . 

Flash-up Windows by Software Bottling . 

HELP/Control byMDS . 

screenplay all varieties by Plexus . 

Screen Sculptor by Software Bottling . 


Speed Screen by Software Bottling . New 

System Builder by Royal American . 

IMPEX Query Utility . New 

Report Builder. 


TDebugPLUS by TurboPower Software . 

Turbo EXTENDER by TurboPower Software .... 

Turbo Professional by Sunny Hill . 

TurboHALO from IMSI . 

TurboPower Utilities by TurboPower . 

Turbo Ref by Gracon Services ... 

TURBOsmith Debugger by Visual Age . 

TurboWINDOW byMetaGraphics . 

wendin products 

Operating System Toolbox. 

PC N X Operating system . 

PCVMS Similar to VAX/VMS . 

XTC Text editor with Pascal source . 

xenix system v 

See also Microport System V/AT section. 

XENIX System V Complete by SCO . 

XENIX Development System. 

XENIX Operating Sys Specify XT/AT . 

XENIX Text Processing Package. 

xenix products 

Btrieve ISAM File Mgr by SoftCraft . .. 

C-ISAM by Informix . 

C-terp by Girnpel, Specify compiler . 

c-tree ISAM Mgr by FairCom . 

dbVISTA All Varieties by Raima . 

d Bx with Library Source by Desktop Al . 

DOSIX User Version by Data Basics . 

DOSIX Console Version by Data Basics . 

Informix by Informix . 

lnformix4GL by Informix . 

InformixSQL by Informix . 

Lyrix by Informix . 

Micro Focus Level II Compact COBOL. 

Forms-2 . 

Level II ANIMATOR. 

Microsoft See Microsoft Section . 

Networks for XENIX by SCO . 

PANEL Screen Designer by Roundhill . 

REAL-TOOLS Binary Version by PCT . 

Library Source Version . ... i . 

Complete Source Version . 

RM/COBOL by Ryan-McFarland . 

RM/FORTRAN by Ryan-McFarland . 

SCO Professional Lotus clone by SCO . 


LOWEST PRICES 


80 

69 

49 

45 

99 

78 

179 

139 

99 

78 

149 

115 

99 

78 

149 

119 

CALL 

CALL 

219 

169 

129 

99 

395 

309 


245 

194 

245 

194 

145 

114 

595 

464 

595 

464 

345 

274 

195 

CALL 

195 

154 

125 

99 

175 

139 

149 

119 

195 

139 

150 

107 

185 

139 


95 

66 

90 

79 

125 

99 

100 

79 

125 

91 

125 

91 

100 

CALL 

75 

CALL 

75 

CALL 

60 

49 

85 

64 

70 

48 

129 

98 

95 

78 

50 

45 

58 

45 

80 

58 

99 

79 

99 

79 

99 

79 

99 

79 


1295 

999 

595 

499 

595 

499 

195 

144 


595 

464 

319 

285 

498 

379 

395 

329 

CALL 

CALL 

550 

499 

199 

CALL 

399 

CALL 

995 

795 

1500 

1239 

995 

795 

595 

449 

1000 

795 

400 

319 

600 

479 

CALL 

CALL 

595 

495 

625 

535 

149 

89 

399 

289 

499 

369 

1250 

949 

750 

549 

795 

595 


Since this ad is prepared in advance of publica¬ 
tion, some of our current prices may be lower 
than what's advertised here. Call for latest 
pricing. 

FREE SHIPPING 

Orders within the USA (including Alaska & Ha¬ 
waii) are shipped FREE via UPS. Express ship¬ 
ping is available at the shipping carrier's stand¬ 
ard rate with no rush fees or handling charges. 

To avoid delays when ordering by mail, please 
call first to determine the exact cost of express 
shipping. 

CREDIT CARDS 

VISA and MasterCard are accepted at no extra 
cost. Your card is charged when your order is 
shipped. Mail orders please include credit card 
expiration date and telephone number. 

CODs AND POs 

CODs and Purchase Orders are accepted at no 
extra cost. POs with net 30-day terms are avail¬ 
able to qualified US accounts only. 

FOREIGN ORDERS 

Shipping charges for foreign and Canadian 
orders are based on the shipping carrier's stand¬ 
ard rate. Since rates vary between carriers, 
please call or write for the exact cost. Foreign 
orders (except Canada), please include an addi¬ 
tional $10 for customs form preparation. All 
payments must be made with US funds drawn on 
a US bank. Please include your telephone 
number when ordering by mail. Due to govern¬ 
ment regulations, we cannot ship to all 
countries. 

VOLUME ORDERS 

Call for special pricing. 

SOUND ADVICE 

Our knowledgeable technical staff can assist in 
comparing products, answer technical questions 
and send you detailed product information tai¬ 
lored to your needs. 

30-DAY GUARANTEE 

Most of our products come with a 30-day docu¬ 
mentation evaluation period or 30-day return 
guarantee. Please note that some manufactur¬ 
ers restrict us from offering guarantees on their 
products. Call for more information. 

CIRCLE NO. 175 ON READER SERVICE CARD 

CALL TOLL-FREE 

US 80G-336-1166 

CANADA 800-225-1166 

OHIO & ALASKA 

(Call Collect) 216-877-3781 

FOREIGN 216-877-3781 

CUSTOMER SERVICE 216-877-1110 

Hours: Weekdays 8:30 AM to 8:00 PM EST. 
Ohio customers please add 6% state sales tax. 
Prices are subject to change without notice. 


136 SUNNYSIDE STREET 


HARTVILLE, OHIO 44632 


Call or write for our FREE comprehensive 
price guide. 


































































































































































its simple. 

With Intel’s Inboard™ 386/AT. 

It fits right into your IBM® AT or 
compatible, and gives you all the per¬ 
formance of a 386 system. 

Without having to buy a 386 sys¬ 
tem. (Which, if you’ve priced one lately 
is about three times as expensive) 
Inboard 386 is based on the revo¬ 
lutionary 32-bit, 16 MHz 80386 chip 
we invented. So it’ll work with all the 


sonware you ve got sitting on your 
desk. As well as any add-in boards you 
may have hiding in your computer¬ 
like, just for instance, the Above™ 
Board. Which we also invented. 

Inboard 386 lets you whiz through 
recalcs with Lotus® 1-2-3.® Andit 
makes your network server serve you 
even faster. In fact, it’ll make any 
program serve you faster. 

And with 386 control software, 


Inboard and Above are trademarks and Intel a registered trademark of Intel Corporation. IBM is a registered trademark of International Business Machines Corp. Lotus and 


















" M " v . n ...‘ ,v A ' '\. " - A 


you can take advantage of exceptional 
multitasking capabilities. Like put¬ 
ting together a presentation while 
your computer is downloading data. 
(A slightly more efficient way of 
doing business) 

Don’t forget our five-year 
warranty Or toll-free technical 
support line. 


To find out more, check with i 
your favorite computer dealer 
or call us at (800) 538-3373. 

And see why Inboard 386 
beats the system. 


1-2-3 are registered trademarks of Lotus Development Corp. © 1986 Intel Corporation 


CIRCLE NO. 216 ON READER SERVICE CARD 












C Programmers: 

We support every product in this ad & 700 others. 

Try any product here with a full 31-day money-back guarantee. 


BRIEF Makes Editing C Programs a Breeze 

No other editor comes close to making your life easier. BRIEF, The Program¬ 
mer’s Editor, is tailored to address the needs of C programmers —your 
needs. Take a look at the BUILT-IN features below. They are just part of 
the reason why 1000s of C programmers already rely on BRIEF. 
AutoCompile - While in BRIEF you can compile with MS C, Lattice, or 
several other compilers (we’ll even help you support any compiler through | 
our 800-line tech support). You save over 20 seconds each compile; and 
you can automate as with a CC.EXE or MAKE. 

Autoindent - Save keystrokes and increase style consistency. Use the editor’s | 
default indentations or modify them to your taste. 

Template Editing - Get the full structure of a programming construct on¬ 
screen and move the cursor from one “fill-in-the-blanks” location to the 
next. 

Error to Error Tracking - Use “next error” to move to the next appropriate | 
line. Display error messages in a separate window - even when you add 
or delete code, BRIEF knows where to go. 

MultiWindow Editing - Keep different parts of the same file in horizontal 
or vertical windows. Put your header file in one, main function in another, 
current function in a third. Any size, any number. 

Macro Language - Completely readable and programmable, the macro 
language will be second nature for an experienced C programmer. Feel 
free to modify the macro source code included with BRIEF. 

And remember, BRIEF is a full featured editor that can be used with any 
language. User surveys indicate that even beginning programmers become 
productive with BRIEF in less than 30 minutes. Call The Programmer’s 
Shop and ask about UNDO (not undelete), Unlimited File Size, Tiled & 
Pop-Up Windows . . ., or ask for a detailed product description that will 
tell you why BRIEF can’t be beat. 800-821-2492 PCDOS $195 


NEW Blaise Tools Are Better Than Ever 
C Tools Plus 

Free yourself for more creative programming; stop worrying about hard¬ 
ware dependence. Handle everything from co-resident software require¬ 
ments to multiple display pages and monitors with C Tools Plus. Filter 
interrupts so that other resident programs still work. 200+ well- 
documented functions control screen handling (direct to video adapter or 
BIOS calls, EGA text mode support including 43 line and multiple display 
pages — even handle multiple monitors), an unlimited number of pop-up, 
stackable windows with word-wrap, interrupt service routines, DOS di¬ 
rectory and file handling, memory management and program control, 
string functions, and more. Source, no royalties. Lattice 3.0, MS C. 

. PCDOS $149 


BLAISE COMPUTING INC. 


Compiler-Compatible Interpreter, Editor, Debugger 

Interactive-C™ 

A fully integrated development environment, Interactive-C combines a 
K&R standard interpreter with a full-screen editor and source-level de¬ 
bugger. Interactive-C is 100% compatible with Lattice or Microsoft. 
You can link in external libraries — your own or commercial: no source 
code modifications are necessary! 

The full screen editor gives you adjustable edit, command, and status 
windows. Switch to second screen for output, or even display on two 
separate monitors. 

Why get only a limited debugger when you can get full source debugging 
with an interactive interpreter? Unlimited breakpoints, variety of stepping 
modes, interactive viewing and modification of variables, automatic 
positioning of cursor at error. Even stop to edit, then continue without 
re-executing from start . 8087/287 support. 

Specify Lattice or Microsoft. 

PCDOS $219 


MacStyle Your C Programs Use Mac’s Friendly 
Interface with C Extender 

Invention Software has written a powerful library that lets novices and 
professional developers alike access the Mac interface with over 85 flexible 
functions to extend, access, and integrate with the ‘Toolbox.” 

High and low level functions create windows, scroll bars, dialog boxes, 
menus, provide mouse support, and perform graphics printing with single 
function calls. NEW version 2.00 features ZOOM windows, marquis to 
copy screen image, double-click detect, search and replace multi-page 
printing, improved text-editing, save and recall MacPaint bit map, “bug 
alert,” modeless dialog support, and generic I/O routines. Compact code, 
partial.source tutorial provided, no royalties. Aztec, Megamax, Consulair, 
Lightspeed. MAC $119 


Fast Prototyping and Development of User Interfaces with 
Skylights 

“It's much easier to adapt to the end-user’s needs than any other product 
I’ve seen . . . definitely a programmer’s tool. ’’ 

- William Elswick, Software Engineer, Compact Video 

Quickly design interactive prototypes, then include screens you develop 
in your finished application code. Design demos or tutorials. 

Skylight combines an intuitive screen/window/menu editor, run-time 
windowing, menu handling, and front-end support routines, and “Demo/ 
Tutorial Maker” program plus detailed low-level primitives. Supports a 
variety of pointing devices (mice, tablets, lightpens). All major C com¬ 
pilers; even use with other languages (BASIC, Pascal, Assembly) with 
utility included Bit-mapped graphics upgrade available. No royalties. 

Skylight PCDOS *» 

I Software, Inc. 


Flexible SCREEN 
and WINDOW Development 
with 

ZVIEW Screen Library 
Use this field-sensitive tool to devel¬ 
op data entry screens and windows 
and provide run-time flexibility. Se¬ 
curity level settings restrict inquiry 
or update of fields; multiple screen 
help display is available at screen 
and field level. 

NEW Features: Windows can be 
stacked, peeled off, and moved at 
run-time. You also get automatic 
scrolling of data within fields. 
ZVIEW gives you full control of 
attributes, colors, boxes, protected 
fields, scrolling, and more. Load 
screens from memory for SPEED. 
Field support includes alpha, 
numeric, or alphanumeric data types, 
case conversion, range checking, 
and field comparison. ZVIEW even 
provides automatic data conversion 
to and from ASCII screen format. 
Microsoft C, Lattice 3.0, and Aztec 
3.2e. Supports EGA, color, and 
monochrome displays. 

PCDOS $189 


280 Functions 
Without “Fat”: 
Blackstar ‘C’ Function Library 

Without duplicating compiler 
library functions, the Blackstar ‘C’ 
Function Library covers the range. 
BOTH Microsoft C and Lattice C 
library versions are included in one 
product with screen, graphics, file, 
text, and serial communications 
routines. Extensive device driver 
support (including mouse handling). 
Low-level utilities and DOS and 
memory control routines. And a 
great price, too. 

Some other libraries are padded 
with different functions that do the 
same thing, or functions that repeat 
routines supplied with your com¬ 
piler. Sterling Castle trims the fat 
to give you over 280 unique 
functions. 

All source is supplied (most in 
C), including routines written in 
assembler for speed optimization. 
You get versions for small, 
medium, and large models. 350 
page manual with quick reference 
guide and demos. No royalties. 
1-800-7-CASTLE PCDOS $99 


Call for Your FREE C Programmer’s Directory 



CIRCLE 134 ON READER SERVICE CARD 


CIRCLE NO. 220 ON READER SERVICE CARD 

800 - 421-8006 

THE PROGRAMMER’S SHOP™ 

5-P Pond Park Road, Hingham, MA 02943 
Mass.: 800-442-8070 or 617-826-7531 11/86 


“I appreciate your service to the programming 
community, your prices more than fair and your 
newsletter amongst the finest in the business.” 

Lawrence 
Fooian Systems, Inc. 











TECH 

DEAN P. GIENGER 

NOTEBOOK 

XON/XOFF Printer Driver 

By using the XON/XOFF software handshaking method shown here, 
the PC can support peripherals that have serial interfaces. 


A lthough the IBM PC supports parallel printers with ease, 
there are times when driving serial peripherals would be 
desirable. Many popular printers, such as the Hewlett-Packard 
LaserJet, use serial (or RS-232) interfaces. 

Because most printers can print characters at only a frac¬ 
tion of the rate that a PC can send them, a printer must ex¬ 
change some handshaking , or control signals, to control the 
rate at which characters are sent by the PC. This control can 
be done through either hardware or software. 

The hardware method involves connecting a special wire 
between the printer and the PC. When the printer is ready to 
accept data, it asserts a logic 1 on this wire. When the printer 
is unable to accept data, it asserts a logic 0. The PC must then 
check the status of this signal before sending data. This sim¬ 
ple method of flow control has several drawbacks. First, it re¬ 
quires an additional wire in the interface cable. Second, the 
printer cannot return any additional status data (paper out, 
device off-line, and so on) unless additional wires are con¬ 
nected between the PC and the printer. 

The software method involves having the printer send 
special flow control characters to the PC to notify it of status 


LISTING 1: XON.ASM 


; Use DOS MODE to redirect LPT1: to C0M1: and set up the BAUD rate etc 


rom_ptr_vec 

equ 

17h*4 

; rom vector location 

com 

equ 

03f8h 

; com1=3f8, com2=2f8 

code 

segment 

public 

•CODE' 


assume 

cs:code,ds:code 


org 

OlOOh 


start 

proc 

far 

; patch in the new code 


cli 


; disable interrupts 


sub 

ax, ax 

; set es segment 


mov 

es,ax 

; copy vector 


mov 

ax,cs 

; reset ptr vector 


mov 

esiword ptr[rom_ptr_vec+2],ax 


mov 

ax,offset ptr_int 


mov 

es:word ptr[rom_ptr_vec],ax 


sti 


; reenable interrupts 


mov 

dx,offset 

last_byte ; call dos to exit 


int 

27h 

; and stay resident 


db 

•(c) 1986, 

Dean P Gienger 1 

start 

endp 



ptrint 

proc 

far 

; we get here from int 17h 

ptr_int: 

sti 


; enable interrupts 


emp 

ah,0 

; is this an output req? 


je 

ptr_out 

; yes 


emp 

ah,1 

; is it an init req? 


je 

ptr_init 

; yes 

ptr_stat: 

push 

dx 

; it must be a status req 


mov 

dx,com+5 

; get status 


in 

al,dx 



and 

al,20h 



je 

ptr_busy 

; port is busy 


mov 

dx,com 



conditions. When the printer is able to accept data it will 
send a special character, called an XON character—chr(17). 
When the printer is unable to accept data, an XOFF charac¬ 
ter—chr(19)—is sent by the printer to the PC. Other charac¬ 
ters may be sent to notify the PC of special conditions. 

The PC may be configured with either serial or parallel 
ports; however, the PC’s software drivers support only the 
hardware method of handshaking. The program below pro¬ 
vides a software driver that allows the PC to use a serial 
printer that uses XON/XOFF software handshaking. 

The program “steals” the special BIOS printer interrupt 
vector reserved for printer functions. This vector is located in 
low memory at address 0000:005CH and is normally set to 
point to the printer driver code located in the system ROM. 
The program redirects this vector to point to its own code 
for driving the serial port using XON/XOFF handshaking. 

Once the XON program is loaded, it directs all printer output 
to the serial port. A serial printer then can be used as if it is a 
standard parallel interface printer. Immimii^l 


Dean P. Gienger is an engineering consultant in California. 



in 

and 

al,dx 

al,7fh 

; is there an xoff ? 


emp 

al,19 

; xoff is A S ( 19 ) 


je 

ptr_busy 

; yes, it is busy 


mov 

ah,80h 

; else return not busy 


pop 

dx 



iret 



ptr_busy: 

mov 

ah,00h 

; return busy status 


pop 

dx 



iret 



ptrout: 

push 

ax 

; print character & save 

ptr_wait: 

mov 

ah,2 

; wait tiLl printer free 


int 

17h 

,* ready? 


and 

ah,80h 



jz 

ptr_wait 

; no 


pop 

ax 

; yes, get char from stk 


push 

dx 



mov 

dx,com 

; send character 


out 

dx,al 



pop 

dx 



mov 

ah,2 

; return status 


int 

17h 



iret 



ptr_init: 

mov 

ax, 27 

; initialize the printer 


int 

17h 

; send ESC E 


mov 

ax,45h 

; to init printer 


int 

17h 



mov 

ah,2 

; return status 


int 

17h 



iret 



lastbyte: 




ptrint 

endp 




code 

ends 



end 




MARCH 1987 


47 




c 

p 


0 

E 


Myne/L I T Y 

R%ErcCIPvR®N c e 



COMPAQ DESKPRO 386 


The New Standard 

Compaq has forged ahead of IBM with the 
first 80386-based machine, offering AT 
compatibility with twice the performance — 
and a bright future in multitasking. 


STEVEN ARMBRUST and TED FORGERON 



ntil now, Compaq Computer Cor¬ 
poration has been content with 
matching IBM’s personal com¬ 
puter offerings, merely making minor 
improvements to what IBM already had 
created. With the introduction of the 
Deskpro 386, however, Compaq has 
leapfrogged over IBM into brand new 
territory. Powered by a 16-MHz Intel 
80386 microprocessor and equipped 
with 32-bit memory and a speedy hard¬ 
disk drive, the Deskpro 386 not only 
offers compatibility with IBM’s PC/AT at 
twice the performance, but also prom¬ 
ises to run future multitasking operating 
environments that will take advantage of 
the 80386 processor. 


The Deskpro 386 comes in three 
models, distinguished only by the hard 
disk. The model 40 is equipped with a 
40MB hard disk, the model 70 with a 
70MB hard disk, and the model 130 
with a 130MB hard disk. The monitor, 
the amount of memory, and the key¬ 
board are options that can be selected 
with each model. The accompanying 
sidebar lists the features available with 
the Deskpro 386. The unit reviewed in 
this article was the model 40 with 1MB 
of RAM, a 1.2MB diskette drive, a 360KB 
diskette drive, a 40MB tape backup unit, 
a serial and a parallel port, the Compaq 
Enhanced Color Graphics Board, and 
the Compaq Color Monitor. 


At first glance, the Deskpro 386 
looks just like the other members of 
the Deskpro family. It uses the same 
cabinet as the Deskpro 286 and there¬ 
fore has many of the same advantages 
and disadvantages as that unit has (see 
“Out from the Shadow of IBM: Compaq 
Deskpro 286,” Steven Armbrust and Ted 
Forgeron, August, 1986, p. 80). The size 
of the system unit is 19^4 inches by 16^ 
inches by 6^4 inches. Photo 1 compares 
its footprint with that of an AT. 

Like the Deskpro 286, the Deskpro 
386 includes the same unattractive key¬ 
lock switch on the front of the system 
unit, with barely readable switch posi¬ 
tions. It also has the on/off switch posi- 



48 


PC TECH JOURNAL 


PHOTOGRAPH • MARC DAVID COHEN 


















DESKPRO 386 




Photo 1 : The system unit of the Deskpro 386 is smaller than 
the IBM AT. The Deskpro measures 19*4 by 16Vz by 6^4 
inches, as indicated by the dotted lines. 

Photo 2 : The layout of the enhanced keyboard of the Desk- 
pro 386 matches that of the IBM enhanced keyboard in 
most respects, but does not have the same IBM feel. 

Photo 3 : Screen controls and the power switch are located 
on the side of the monitor. The monitor may be tilted up 5 
or 10 degrees using the built-in tilt bar. 

Photo 4\ Slot 1, the leftmost slot, is the 32-bit slot. The main 
connector for this slot is at the front of the system unit. A 
small power/ground connector is located near the rear. 

Photo 5: The main 32-bit connector is on the bottom left of 
the board. The two double rows of pins protruding from the 
board are for attaching a piggyback memory module. 





PHOTO 3; Compaq Color Monitor 


PHOTO 4: Inside the System Unit 


PHOTO 5: System Memory Board 


50 


PC TECH JOURNAL 



































































































tioned on the rear panel of the unit 
where it is difficult to find. The two ma¬ 
chines share the convenient feature of a 
two-color drive light that shines green 
when accessing a 1.2MB diskette and 
red when accessing a 360KB diskette. 

Two keyboards are available for 
the Deskpro 386: one matching the 
layout of IBM’s original AT keyboard 
and one matching IBM’s enhanced key¬ 
board. The only difference between the 
new Compaq keyboard and the earlier 
one is in the layout. The keys still have 
a light touch and provide little tactile 
feedback. The keyboard plugs into the 
front of the system unit, requiring its 
removal whenever the cover of the sys¬ 
tem unit is taken off. As with other 
Deskpro models, the keyboard cable 
seems to be excessively long, but this 
problem can be alleviated by tilting up 
the keyboard on its legs and placing the 
excess cable underneath. Photo 2 com¬ 
pares Compaq’s enhanced keyboard 
with that of IBM. 

With the Deskpro 386, Compaq 
offers its new Color Monitor and En¬ 
hanced Graphics Board, which is com¬ 
patible with the IBM Enhanced Graph¬ 
ics Adapter (EGA). The Compaq Color 
Monitor is compatible with IBM’s En¬ 
hanced Color Display. It produces accu¬ 
rate colors and text that is easy to read. 
However, when compared to the new 
generation of enhanced color monitors, 
such as the NEC Multisync, the charac¬ 
ters produced by the Compaq monitor 
in high-resolution text mode are not as 
crisp and clear. The monitor controls 
are conveniently placed on the side of 
the display where they can be accessed 
easily (see photo 3). 

The Compaq graphics board works 
with both the color display and Com¬ 
paq’s dual-mode monochrome display. 
When connected to the dual-mode 
monochrome display and switched into 
monochrome emulation mode, the 
Compaq graphics board can produce 
text with a resolution of 720-by-350 pix¬ 
els. When connected to the Compaq 
Color Monitor (or another enhanced 
color display), it offers 16 colors from a 
palette of 64 and a resolution of 640-by- 
350 pixels. The graphics board also can 
be used with an ordinary color display 
to generate output equivalent to that 
produced by IBM’s Color Graphics Ad¬ 
apter (CGA). However, it cannot be 
connected to an IBM monochrome 
monitor (or the equivalent) without 
damaging the display. The board can be 
installed in other Compaq computers, 
such as the Portable or Portable II, 
where it can drive either the built-in 
dual-mode display or a color display. 


80386 ENHANCEMENT 

The Deskpro 386 is loaded with extras 
that are not available on any other AT- 
compatible computer, but by far the 
most exciting and obvious of these is 
the 80386. This 32-bit microprocessor 
from Intel has 32-bit instruction and 
data paths, provides real and protected 
modes, and offers a virtual-8086 mode 
and memory paging that enable it to 
handle multiple real-mode applications 
(such as DOS applications) simulta¬ 
neously. (For a complete description of 
the capabilities of the 80386, see “Up¬ 
ward to the 80386,” Caldwell Crosswy 
and Mike Perez, February 1987, p. 50.) 

The Deskpro 386 system starts run¬ 
ning with the 80386 in real mode, and a 
reboot always returns the processor to 
this mode. When operating in real 
mode, all the restrictions associated 
with 8086/88 processors apply. Seg¬ 
ments are limited to 64KB, and the 
memory address space is 1MB. The 
80386’s 32-bit instructions can be used, 
however, enabling programs to improve 
performance with 32-bit data transfers 
and 32-bit operands for instructions. 

Protected mode in the Deskpro 
386 is compatible with the protected 
mode in 80286 machines, but the 80386 
increases the memory address space 
(from 16MB fco 4GB) and the maximum 
segment size (from 64KB to 4GB). In 
addition, it also provides memory pag¬ 
ing, I/O protection, a full 32-bit instruc¬ 
tion set, and virtual-8086 mode. 


Virtual-8086 mode is a special form 
of protected mode that enables real¬ 
mode applications to execute within 
protected mode. In virtual-8086 mode, 
memory addressing reverts to the 
base:offset form used in the 8088 and 
in real mode on the 80286 and 80386. 
This permits current application pro¬ 
grams to run, but confines them to the 
1MB address space of the 8088. Despite 
this limitation, the paging facilities (de¬ 
scribed below) of the 80386 permit the 
1MB real-mode address space to be 
mapped anywhere in the 4GB address 
space that is available in protected 
mode, thus permitting several real¬ 
mode applications to run concur¬ 
rently—without any modification. 

The Deskpro 386 uses this virtual- 
8086 mode and memory paging combi¬ 
nation to implement its own Compaq 
Expanded Memory Manager (CEMM). 
This program gives DOS applications 
access to the expanded memory out¬ 
lined in the Lotus-Intel-Microsoft (LIM) 
specification without requiring special 
bank-switching memory boards. 

In the Deskpro 386, the 80386 pro¬ 
cessor runs at 16 MHz, twice the speed 
at which the 80286 runs in the AT. In 
addition, the 80386 can access RAM 32 
bits at a time (compared with the 16-bit 
memory access provided by the 80286). 
With this double dose of supercharging, 
DOS applications might be expected to 
run four times as fast as they do on an 
8-MHz AT; however, because the cur- 


DESKPRO 386 VITAL STATISTICS 

Model 40: $6,499 

Memory capacity on system board 

1MB memory 

Parallel printer interface 

None 

Serial interface 

32-bit memory capacity of system 

1.2MB diskette drive 

Realtime clock 

10MB 

40MB hard disk 

Expansion slots 

32-bit: 1 

Model 70: $7,299 

16-bit: 4 

All features of Model 40 except 

8-bit: 3 (one half-size slot) 

with a 70MB hard disk. 

Available slots 

Model 130: $8,799 

Model 40 Model 130 

All features of Model 40 except 

32-bit: 0 32-bit: 0 

with a 130MB hard disk. 

16-bit: 3 16-bit: 2 


8-bit: 2 8-bit: 2 

Display adapters (none is standard) 
Dual-mode 

Other extras available 

Enhanced Color Graphics Board 

40MB tape backup: $799 

360KB diskette drive: $225 

Monitors (none is standard) 

1MB memory option: $549 

Dual-mode monochrome monitor 

1MB/2MB expansion board: $849 

Enhanced color monitor 

4MB/8MB expansion board: $2,995 


MARCH 1987 


51 













UP TO 
25 USERS 


MADE FOR 
THE 80386. 


RUNS DOS 
PROGRAMS 


MULTI-TASKING 


learn'hew commands or install new hardware. 

Software Support for Thousands 
of DOS Programs. Although PC-MOS 386 v 
totally replaces DOS. it doesn't make you 
replace your favorite DOS programs. So you 
can run programs like Lotus 1-2-3. WordStar, 
dBASE III, and WordPerfect on the 80386. 
Best of all. it uses familiar commands like 
DIR and COPY-so you’ll feel comfortable 
I with our system. 

The Gateway to Endless 
ft Features. Distinctive characteristics 

■ like file/system security, remote access. 
K file, record locking, and built-in color 

V graphics support for EACH user set 

PC-MOS 386 rv apart from ail previous 
operating systems. 

Open the Doors to Your 
Future TODAY! Call The Software 
Link TODAY for more information and 
the authorized dealer nearest you. 
PC-MOS/386 rM comes in single, five & 
25-user versions starting at $195. 


Imagine the speed and power of a 
$1< m i.t m M i minicomputer in a desktop PC cost* 
:ngundei $7.<XM) Now imagine all that power 
g* >ing to waste because the operating system 
v» m ch« >se was never meant to take advan¬ 
tage *>t a computer this powerful. It will 
take more than just a “window environ¬ 
ment’* or an outdated operating system 
to unlock the 80386. 

It will take PC-MOS/386™ J 

The First 80386 Operating J 
System. Specifically designed for the M 
$0386 computer. PC-MOS 386 v opens A 
d< >ors. Doors to more memory and H 
multi tasking. Doors to thousands 
of 1 >OS programs as well as upcom¬ 
ing 80386-specific software. Its the 
^iitr-cuy to the latest technology.,, and H 
your networking future. B 

Memory Management 
Without Boards. PC-MOS exploits 
the memory management capabilities 
built into the 80386. So. up to four HI 
GIGABYTES of memory are access¬ 
ible to multiple users and to future H 

80386-specific applications requiring 
megabytes of memoiy. H 

Multi-Tasking. Multi¬ 
user Support for One. Five or 
25 Users. PC-MOS 386 M allows 
up to 25 inexpensive terminals to be 
driven by a single 80386 machine. ^B 
So the features of the 80386 can be 
utilized at every terminal. And it H 

conies in three versions so you can VS 
upgrade your system as your com- 
pane grows.. .without having to 'Em] 


THE SOFTWARE LINK, INC. 


8601 Durnvoocy Pc 
ma. GA 30338 Telex 


‘ 632 

SWL1NK 


CALL: 800 151-LINK 

In Georgia: 404 998-0019 
I Valen OE "N1 Inquiries invitee 
Dealers: 404/998-0700 OEMs: 404 84. 



""TY k 

ip 

I 


TRADEMARK ACKNOWLEDGEMENTS: MultiLink®is a registered trademark of The Software Link, Inc. PC-MOS/SSS™ MultiLink®Advanced, and LANLink™ are trademarks of The Software Link, Inc. 
Lotus 1-2-3, WordStar, dBASE III, & WordPerfect are trademarks of Lotus Development Corp., MicroPro, AshtonTate, & WordPerfect Corp., respectively. Prices and technical specifications subject to change. 


CIRCLE NO. 196 ON READER SERVICE CARD 







DESKPRO 386 

rent versions of DOS and the applica¬ 
tions that run under them are written 
for 16-bit processors, code and data are 
still accessed 16 bits, rather than 32, at a 
time. Despite this underutilization of 
the 80386, existing real-mode programs 
run approximately twice as fast on the 
Deskpro 386 as on an 8-MHz AT. 

In the future, programs that take 
advantage of the 32-bit instruction set of 
the 80386 can expect to improve per¬ 
formance even more. For example, the 
32-bit version of the MOV instruction, 
which is available even in real mode, 
can potentially double the data-transfer 
speed provided by the 80286. 

To take advantage of the 32-bit data 
path of the 80386, the Deskpro 386 pro¬ 
vides a 32-bit memory bus for access to 
RAM. This bus takes the form of a 32- 
bit slot on the system board. Compaq 
claims that this is not a general-purpose 
bus, but merely a mechanism to opti¬ 
mize the performance of the Deskpro 
386 memory subsystem. It enforces this 
opinion by providing just a single 32-bit 
slot and by not supplying any RAM on 
the system board itself. A 32-bit mem¬ 
ory board, supplied in the standard 
configuration with 1MB of soldered 
RAM, fits into this slot. With additional 
256K-by-l static-column DRAM chips, 
this board can be expanded to 2MB. 

One of two piggyback boards can be 
added to the 32-bit memory board: one 
provides 1MB, expandable to 2MB, with 
256K-by-l chips; the other provides 
4MB, expandable to 8MB, with lM-by-1 
chips. Thus, the Deskpro 386 can con¬ 
tain as much as 10MB of RAM, all ac¬ 
cessed via the single 32-bit slot. 

The 32-bit slot consists of an 80-pin 
connector whose signals are generated 
directly by the 80386. This memory bus, 
which runs at 16 MHz, is simply an ex¬ 
tension of the processor’s local bus. 

This direct interface minimizes the sig¬ 
nal delays between the processor and 
the memory subsystem. 

The 32-bit memory boards are con¬ 
figured into a 36-bit wide arrangement, 
consisting of 32 bits of data and 4 bits 
of parity (one parity bit for each byte). 
On the system memory board, and on 
the 1MB/2MB piggyback board, the 
memory chips are 256K-by-l static-col¬ 
umn DRAMs, yielding a memory bank 
size of 256K 32-bit double words, or 
1MB. On the 4MB/8MB piggyback 
board, the memory chips are lM-by-1 
DRAMs, yielding memory banks of 4MB. 

With a 16-MHz processor, fast ac¬ 
cess to RAM is essential; otherwise, the 
speed advantages of the processor are 
negated. In the PC, the cycle time of the 
8088 is 210 nanoseconds (ns), and a 



To access memory in each 1MB bank, the memory subsystem specifies nine-bit 
row and column addresses. Static-column RAM allows the memory to respond in 
zero wait states if the row address is the same as in the previous memory access. 


bus cycle is 840 ns, enabling readily 
available 200-ns DRAM chips to be used. 
The 200 ns is the access time, or the 
time required for a charged DRAM to 
return information. Additional time is 
required to recharge the DRAM for the 
next memory access. The sum of the ac¬ 
cess time and the recharge time is the 
DRAM cycle time, which is the actual 
time needed to obtain information from 
the chip. In 200-ns DRAM chips, the 
cycle time is 345 ns. 

The cycle time of a 16-MHz 80386 
is 62.5 ns. Using 200-ns RAM chips and 
an ordinary memory-accessing scheme 
would reduce the overall performance 
to little better than that of a PC, because 
wait states would have to be inserted to 
make the processor spend some of its 
time waiting for memory. 

The easiest way to improve mem¬ 
ory access times is to remove all wait 
states and use faster DRAM chips. How¬ 
ever, to make significant improvements, 
chips with memory access times in the 
60-ns range are required, and those are 
prohibitively expensive. Computer 
manufacturers have resorted to other 
schemes to obtain better performance 
from the memory subsystems on high- 
performance computers while still us¬ 
ing less expensive DRAM chips. 

One method is to use a memory 
cache, a limited amount of high-speed 
static RAM that is used to store copies 
of the memory locations that are ac¬ 
cessed most often. With a large enough 
memory cache and an appropriate algo¬ 
rithm for copying data to and from the 
cache, many caching systems are 90-per¬ 
cent effective (that is, more than 90 per¬ 
cent of the time, the data needed will 
already be in the high-speed cache). 
Caches are more expensive than some 
other methods, because they require 


costly, high-speed SRAM chips in addi¬ 
tion to the RAM in the user-address 
space. Extra board space is also re¬ 
quired for the memory that makes up 
the cache and its support circuitry. 

Another method for improving 
memory access times uses interleaved 
(or bank-switched) memory. This 
scheme assumes that most memory ac¬ 
cesses are sequentially ordered. There¬ 
fore, the memory is divided into two or 
more banks, with the sequential ad¬ 
dresses interleaved among the banks. 
For example, in a 32-bit computer with 
two memory banks, the first 32 bits 
would be in bank 0, the second 32 bits 
in bank 1, the third 32 bits back in bank 
0, and so on. This interleaving speeds 
sequential accesses by enabling one 
memory bank to be fetching a subse¬ 
quent double word while the processor 
accesses the previous double word 
from the other bank. However, the ben¬ 
efit of overlapped accesses is not with¬ 
out penalty. Additional logic is required 
to implement the interleaved memory, 
and initial accesses (and consecutive ac¬ 
cesses to the same bank) are longer 
than they would be if the interleaving 
circuitry were not present. 

Interleaving improves the perfor¬ 
mance of sequential accesses, but real 
mode on the 80386 (which almost all 
current applications use) requires a seg¬ 
mented program structure—that is, sep¬ 
arate (often physically separated) seg¬ 
ments are used to store a program’s 
code and data. As a result, memory ac¬ 
cesses often bounce around between 
the code and data segments with few 
extended periods of sequential ac¬ 
cesses; thus, much of the advantage of 
an interleaved architecture is lost. 

A third alternative, and the one 
used in the Deskpro 386, is memory 


MARCH 1987 


53 

























































































































KNOWLEDGEMAN/2 
LETS YOU GET TODAY’S WORK DONE 
AND PLAN FOR TOMORROW. 


KnowledgeMan/2,® the most advanced 
business software available, lets you be more 
productive than ever before and in less time. 

A , These powerful business 
capabilities, tightly fused 
ipjgjy into a single pregram, work 

together for you: 

□ Relational data manage¬ 
ment □ Spur-of-the- 
moment inquiry □ Spreadsheets 
□ Statistical analysis □ Forms manage¬ 
ment □ Programming language 

□ Options for creating graphs, processing 
text, generating reports, painting forms, 
mouse processing and remote communica¬ 
tions. 

KnowledgeMan/2 s four user interfaces 
make it easy for you... and all your business 
people... to work with KnowledgeMan/2: 

□ Menus, help screens and easy-to-use 
documentation guide your every step, if 


you’re just beginning. 

□ Direct commands for the power usei; with 
help available when you want it 

□ K-Chat, the optional natural language 
interface, for asking for information in 
plain English. 

□ Procedural programming for the advanced 
user 

Get KnowledgeMan/2 working for you 
today. And start planning for tomorrow. 

KnowledgeMan/2 is available for the IBM 
PC, PC/XT PC/AT and compatibles. Multi¬ 
user versions are offered for the DEC VAX 
system and 3Com, Novell and IBM PC local 
area networks. 

Your local mdbs sales representative can 
provide additional information. For the 
location of the sales office nearest you, call 
or write mdbs. 


mdbs and KnowledgeMan/2 are registered trademarks and K-Chat a trademark 
of mdbs, Inc. “VAX” is a registered trademark of Digital Ecpiipment; “PC/XT” 
and “PC/AT’of IBM Corp.; 3Com of 3Com Corp.; Novell of Novell, Inc. 


KNOW LEDGE 

man/ ^ @ 

THE UNIVERSAL KNOWLEDGE MANAGEMENT SYSTEM 

' mdbs 

mdbs/Marketing and Sales • EO. Box 248 • Lafayette, IN 47902 • 800/344-5832 • 317/463-2581 (Indiana, Canada) -— 

CIRCLE NO. 211 ON READER SERVICE CARD 












DESKPRO 386 



When the Deskpro 386 is set up for 640KB of conventional memory, the remaining memory in the first megabyte is located at 
addresses below 16MB. The BIOS is copied into the top 128KB. Other 32-bit memory is assigned addresses beginning at 1MB. 


paging, in which the system RAM is di¬ 
vided into areas of equal size called 
pages. With the paging circuitry in oper¬ 
ation, successive accesses to memory 
within a page are extremely fast, while 
successive accesses to different pages 
are slower. The segmented architecture 
of real mode negates some of the ad¬ 
vantages of paging, just as it does with 
interleaving. Accessing memory outside 
a page boundary enacts the same type 
of performance penalty as consecutively 
accessing a single bank of an inter¬ 
leaved system. 

The Deskpro 386 implements 
memory paging by using static-column 
RAM chips. For memory access, each 
1MB bank of RAM is logically divided 
into rows and columns, and access to 
memory is obtained by presenting a 
row address and column address. These 
addresses are latched internally using 
the row address strobe (RAS) and col¬ 
umn address strobe (CAS). The RAS and 
CAS combination identifies a specific 
32-bit double word—the amount of 
memory that the 80386 can access in a 
single memory fetch. Each row and col¬ 
umn address is a 9-bit quantity, imply¬ 
ing 512 (or 2 9 ) items in each row and 
column. With each item being 4 bytes 
(32 bits) long, each page (or specific 
row address) of memory consists of 512 
(2 9 column addresses) by 4 bytes, or 


2KB of memory. With 512 of these 
pages, the addressing scheme is able to 
handle 1MB of memory. Additional 1MB 
"banks are accessed in the same manner, 
with their own row and column ad¬ 
dresses (see figure 1). 

With static-column DRAM chips, 
memory accesses within the same page 
can happen with zero wait states, be¬ 
cause the RAS is maintained from the 
previous memory access. When a new 
memory access is required, the row ad¬ 
dress is compared with the value al¬ 
ready maintained by the memory chips. 
If the new row address is the same as 
the previous one (that is, the memory is 
in the same 2KB page), only a new col¬ 
umn address needs to be presented to 
the DRAM. This results in a zero-wait- 
state access. However, if the new row 
address is different (that is, the memory 
is in a different 2KB bank), the proces¬ 
sor must wait for the memory to re¬ 
charge and present a new row address 
followed by column address. This pro¬ 
cess results in two wait states. 

There is one situation, however, in 
which access to memory occurs at two 
wait states, even if the access is within 
the same page. If an idle bus cycle oc¬ 
curs, the memory subsystem turns off 
paging mode, allowing the memory 
subsystem to get a head start on what¬ 
ever memory access it predicts will hap¬ 


pen next. If the next access is within 
the same page, however, it will occur at 
two rather than zero wait states, be¬ 
cause the processor will have to restart 
paging mode and present both a row 
and a column address. 

Idle bus cycles are common when 
writing to memory because the number 
of processor cycles required to execute 
some write instructions is more than 
the bus cycles needed to transfer the 
data. Thus, idle bus cycles are inserted, 
which turns off the paging. 

Compaq turns off paging when an 
idle cycle occurs because tests showed 
that an idle cycle typically precedes an 
access outside the page. Therefore, 
even though some accesses within a 
page are slowed to two wait states, 
overall performance is increased by 1 
to 2 percent by using the idle cycle to 
anticipate accesses outside a page. 

The paging scheme used in the 
Deskpro 386 complements the way that 
the 80386 instruction prefetch works. 
The sequential nature of instructions 
and the 80386’s desire to keep the pre¬ 
fetch queue full enable the memory 
subsystem to operate within a physical 
page much of the time. 

Compaq claims that in average cir¬ 
cumstances, approximately 60 percent 
of all memory accesses occur within a 
page. Therefore, the memory in the 


MARCH 1987 


55 


































BOOKMARK m Data Protection Software 

Automatically marks your place so you can resume where you left off. 

Runs with most software so if you decide to call it a day you can power down, and upon restart 
BOOKMARK will bring you back where you left off...it’s like having a BOOKMARK in your computer! 

Stop wasting time navigating through menus .. . or teaching novices. 

Easy to use. You choose how often work is saved, by number of keystrokes or length of time. 

Work in progress can be resumed within seconds after system crash, power failure, accidental 
reset or power down. 

Costly battery backup systems are no longer needed when work in progress is already saved to the 
point of the previous BOOKMARK placement. 

BOOKMARK is a memory-resident utility that automatically and periodically saves work in 
progress to a reserved area of the hard disk. 

Suggested Retail Price $69.95 Requirements: 

IBM PC/XT/AT or 100% Compatible 
64k to 640k 

IBM DOS 2.1 or Higher 

1 Floppy Disk Drive • Hard Disk Drive (10 Megbytes Minimum)* Video Display Adapter, IBM (Monochrome, Color, Enhanced Color). Hercules, AST 
(BOOKMARK occupies an equivalent space on hard disk as in system RAM plus video RAM) 



To Order, Call INTELLISOFT International or Ask Your Dealer for BOOKMARK 

INTELLISOFT: 



IIMTEHIM ATIOIM AL 

Call Toll Free (800) 544-MARK • In California Call Toll Free (800) 543-MARK 
70 Digital Drive • P.O. Box 1972-Novato, California 94948 • (415) 883-1188 

BOOKMARK 1 * is a trademark of INTELLISOFT International. Copyright© 1986 by INTELLISOFT International. All rights reserved. 

IBM PC/XT/AT are registered trademarks of International Business Machines Corporation. Hercules is a trademark of Hercules Computer Technology. 
AST is a registered trademark of AST Research, Inc. 


CIRCLE NO. 114 ON READER SERVICE CARD 







FIGU RE 3: Memory-mapped Hardware Register 


DESKPRO 386 

Deskpro 386 must average 0.8 wait 
states per 32-bit access. For tightly 
coded, highly sequential applications, 
such as graphics drivers, it is possible 
to approach zero wait states. 

To put these figures into perspec¬ 
tive, consider the difference in access 
times between 32-bit memory on the 
Deskpro 386 and 8-bit memory over the 
PC bus. A 32-bit access within the same 
page on the Deskpro 386 requires 2 
processor cycles (at 62.5 ns per cycle) 
or 125 ns. A 32-bit access outside the 
current page requires 4 processor cy¬ 
cles or 250 ns. Assuming 60 percent of 
the accesses occur within the current 
page, the average 32-bit access time is 
175 ns. A similar 32-bit access from 8- 
bit memory requires 48 processor cy¬ 
cles, or approximately 3 microseconds. 
No wonder the Deskpro 386 seems fast. 

Tests conducted for this article re¬ 
vealed that it was possible to achieve 
zero wait states when reading and writ¬ 
ing memory. However, normal pro¬ 
grams will not achieve this level of per¬ 
formance unless their memory accesses 
are limited to the same 2KB page. One 
wait state is more realistic. 

It remains to be seen whether the 
memory paging scheme used in the 
Deskpro 386 really performs better than 
interleaving or is more cost-effective 
than caching. Once the various kinds of 
systems become readily available, more 
conclusive real-world performance mea¬ 
surements can be taken. 

NO MEMORY WASTED 

In its base configuration, the Deskpro 
386 contains 1MB of 32-bit RAM sol¬ 
dered into a system memory card that 
fits into the 32-bit expansion slot. With 
jumpers on this memory card, the user 
can select 256KB, 512KB, or 640KB of 
conventional memory. The remainder 
of the 1MB is automatically mapped to 
just beneath the 16MB address. Figure 2 
shows the memory map for the most 
common configuration (640KB). 

Although the extra 384KB of RAM 
is not available via normal DOS opera¬ 
tions, Compaq has not let that extra 
memory go to waste. The uppermost 
128KB segment, located at address 
FE0000FI, is used to improve the BIOS 
performance. Upon start-up, the Desk- 
pro 386 copies the system BIOS and the 
Compaq Enhanced Graphics Board 
BIOS (if available) into that memory 
and remaps the memory via special 
hardware map registers so that it re¬ 
places the 128KB area normally re¬ 
served for the system ROM (from 
0E0000H to 0FFFFFH). Once this map¬ 
ping takes place, applications can access 


BITS 


7 

6 5 

4 3 

2 ] 

l 0 





L 



Relocate the 128KB block starting 
at FE0000H to address OE0000H 
(overlaying the ROM addresses) 

Do not relocate RAM. The 128KB 
block will be available only at 
address FE0000H 


- 0 = Write-protect the 128KB block of 

RAM starting at address FE0000H 

1 = Do not write-protect the memory 


Writing to location 80C00000H sets the memory-mapped hardware register that is 
used to remap and write-protect the memory into which the ROM BIOS is copied. 


FIGURE 4: Memory-mapped Diagnostics Register 


BITS 


7 

6 

5 

4 

3 

2 

1 

0 


-0 = Parity error in byte 0 

-0 = Parity error in byte 1 

-0 = Parity error in byte 2 

-0 = Parity error in byte 3 

-L - qo = 640KB of base memory 10 = 512 KB of base memory 

01 = Invalid 11 = 256KB of base memory 

-0 = The system memory board, the second 1MB of RAM 

0 = A piggyback board is installed on the system memory board 


Reading location 80C00000H returns the status of the memory configuration 
jumpers and the parity bits for each of the four bytes of a 32-bit double word. 


the remapped BIOS either at address 
FE0000H or 0E0000H; the actual system 
and graphics board ROM devices are no 
longer accessible. Even with the remap¬ 
ping, this procedure relocates the 
graphics board BIOS, which normally 
starts at 0C0000H, to 0E0000H to 
0F0000H. Therefore, only the BIOS 
from a Compaq Enhanced Graphics 
Board is copied because there is no as¬ 
surance that another BIOS will contain 
position-independent code that works 
properly when relocated. 

By remapping the BIOS into 32-bit 
RAM, the Deskpro 386 dramatically im¬ 
proves the BIOS performance. Instead 
of residing on 250-ns ROM chips ac¬ 
cessed via a 16-bit bus in the case of 
the system BIOS or via an 8-bit bus in 
the case of the enhanced graphics 
BIOS, the remapped BIOS is accessed 
out of 32-bit static-column RAM. This 
RAM is write protected by special hard¬ 
ware registers so that out-of-control 


programs do riot accidentally write to 
the BIOS and cause damage. 

The Deskpro 386 contains a mem¬ 
ory-mapped hardware register called 
the RAM relocation register that con¬ 
trols the mapping and write protection 
of this system RAM. It is a write-only 
register available at address 80C00000H. 
Bits 0 and 1 control the remapping of 
the ROM space and the write protec¬ 
tion, as shown in figure 3. 

Reading the same memory location 
(80C00000H) returns the contents of 
the diagnostics register. This register 
can pinpoint which byte within a 32-bit 
double word caused a parity error. It 
also identifies which memory is 32 bits 
so that diagnostics programs can use 
32-bit reads and writes to speed up 
their RAM tests. Figure 4 shows the bit 
definitions of the diagnostics register. 

Despite the speed improvements 
caused by the remapped ROM, this fea¬ 
ture is not likely to improve overall 


MARCH 1987 


57 


































































tiippnu tminroti 


mmt iinm?inWHnrtmT*|{}i?i 


timm: 


3ES0BQ 




ISllP 

rrrrt’TrtT?. 


One language supports this community. 

That language is Pascal-2, now on the 
PC and producing the fastest, most 
compact code available. For the 
professional programmer, imagine what 
you can do with this power: 
Cut execution time by 20% to 200% 
Transport MS-DOS programs to VAX, 
PDP-11, and 68000 machines with only 
minor adjustments Cut executable 
program size by up to 50% Use all of 
DOS-addressable memory through 
efficient large-memory model Speed 
error correction and save development 
turn-around time with sophisticated error 
checking and reporting Find and fix 
logical errors with the interactive source- 
level debugger Access DOS services 


Riscal-2 


FOR MS-DOS 



and network files Call Microsoft 
FORTRAN, C, Pascal, and assembler 
Upgrade from TURBO Pascal with 
compatible strings, equivalent procedures 
and access to TURBO graphics. 

Plus! 

Intel CEL87 mathematical library for 
scientific computing A special interface 
between Pascal-2 and the programmable 
BRIEF text editor (editor optional). 

Certified ISO standard Level 1. 
Dramatically improve your productivity 
and introduce your PC software 
to the VAX next door. 

Call or write OREGON SOFTWARE, INC. 
6915 SW Macadam Avenue, 

Portland, OR 97219 (800)367-2202 
TWX: 910-464-4779 FAX: (503) 245-8449 


OREGON !ii SOFTWARE 


Real tools for real work 


AT LAST THE PERFORMANCE IS PORTABLE 

The following are trademarks: Oregon Software, Pascal-2, Oregon Software, Inc.: IBM. PC-AT, PC-DOS International Business Machines Corporation: Intel, Intel Corporation; 

MS, Microsoft Corp.; TURBO Pascal, Borland International, Inc.: BRIEF, UnderWare Corp.; PDP, VAX, Digital Equipment Corp. 

CIRCLE NO. 200 ON READER SERVICE CARD 














DESKPRO 386 

performance appreciably. The most per- 
I formance-sensitive areas of the BIOS 
I are the screen display routines, and 
most applications circumvent those rou¬ 
tines by writing direcdy to the display 
adapter RAM via the 8-bit interface. Pro¬ 
grams that use the BIOS for screen op¬ 
erations, such as DIR, TYPE, and other 
DOS commands, are much faster. Thus, 
the remapped BIOS can affect users’ 
perceptions of overall performance, 
simply because many people judge a 
computer’s speed by how fast a DIR list¬ 
ing scrolls up the screen. 

On the other hand, if the BIOS 
were not copied into RAM, the perfor¬ 
mance of some tight loops that use the 
BIOS might actually be worse than on 
an 80286-based computer. This degrada¬ 
tion could occur because the 80386 is 
optimized for 32-bit operations, while 
the BIOS is contained on ROM chips ac¬ 
cessed via the 16-bit bus. 

For example, the 80386 is constant¬ 
ly trying to fill its prefetch queue with 
the instructions it expects will execute 
next. This prefetch queue is 32 bits 
wide, so each prefetch is 32 bits, wheth¬ 
er or not the bits come in one access 
from 32-bit memory, two accesses from 
16-bit memory, or four accesses from 8- 
bit memory. A prefetch of system BIOS 
instructions from ROM requires two 
separate 16-bit accesses, both of which 
must be completed before the proces¬ 
sor can continue with other operations. 
Because of the extra time required for 
two separate memory accesses, a pro¬ 
cessor that was idle at the start of the 
prefetch might be holding up other op¬ 
erations by the time it finishes. This ef¬ 
fect will be especially noticeable in pro¬ 
grams that have small (two instruction) 
loops, because the jump instruction at 
the end of the loop flushes the prefetch 
queue. Users also might notice this ef¬ 
fect if they do not use the Compaq En¬ 
hanced Graphics Board, because the 
Deskpro 386 will not copy non-Compaq 
I BIOS code into RAM. In this case, four 
separate 8-bit accesses are required for 
each 32-bit fetch because the graphics 
board uses an 8-bit interface. 

The remaining 256KB of RAM not 
available via normal DOS operations is 
referred to by Compaq as built-in mem¬ 
ory . Two programs are provided to en¬ 
able ordinary DOS applications to take 
advantage of this memory: CEMM and 
VDISK, a RAM-disk program. Other pro¬ 
grams will have difficulty using this 
built-in memory, because it resides at 
high memory addresses just below the 
remapped BIOS. Most programs , that 
use extended memory require that such 
memory begin at the 1MB address and 


that no gaps exist in the memory. This 
is not a problem, however, for the 
CEMM and VDISK programs. Even if 
other extended memory is added, 
CEMM and VDISK can use both the 
built-in memory and the other ex¬ 
tended memory automatically. 

CEMM was developed jointly with 
Microsoft to provide an expanded mem¬ 
ory interface to extended memory. 
CEMM uses the virtual-8086 mode of 
the 80386 in combination with the 
80386’s paging capability to support the 
LIM expanded memory specification, 
without the need for special bank¬ 
switching memory boards such as 
Intel’s Above Board. CEMM simulates 
the bank-switching hardware by map¬ 
ping the Deskpro 386’s 32-bit extended 
memory into the page frame specified 
in the LIM standard. This enables DOS 
applications that support the LIM speci¬ 
fication to access additional memory up 
to the 8MB limit of the specification. 

CEMM grants flexibility to the large 
amount of fast 32-bit memory that can 
be added to the Deskpro 386. For ex¬ 
ample, Intel’s QUIKMEM2 RAM disk, 

Two programs are pro¬ 
vided to enable ordinary 
DOS applications to take 
advantage of built-in mem¬ 
ory. CEMM and VDISK 


which normally requires an expanded 
memory board, ran without difficulty 
from extended memory when using 
CEMM. The added flexibility has its cost, 
however. System overhead for handling 
interrupts increases in virtual-8086 
mode because of the time required for 
the 80386 to switch between protected 
and virtual-8086 modes. Thus, programs 
that run in virtual-8086 mode execute 
approximately 5 percent slower than 
programs that run in real mode. 

In addition, other programs that 
run in protected mode cannot be used 
when CEMM is active. Attempts to run 
such programs (RAM disks and disk 
caches are two examples) cause CEMM 
to display the following message: 

Privileged Operation Error 
Deactivate CEMM and Continue (C) or 
reBoot (B) (OB)? 

When this message occurs, the user can 
either deactivate the expanded memory 


and continue with the program or re¬ 
boot the computer. 

To avoid such messages when run¬ 
ning software that uses protected mode, 
the user can switch expanded memory 
on or off from the keyboard, using the 
commands CEMM ON and CEMM OFF. 
CEMM AUTO is the default setting, mak¬ 
ing expanded memory (and its asso¬ 
ciated overhead) available when re¬ 
quested by an application program. 

386 EXTRAS 

As mentioned earlier, additional mem¬ 
ory and piggyback cards can be added 
to the Deskpro 386 system memory 
card to supply as much as 10MB of 
high-speed, 32-bit RAM. Other 16-bit 
memory cards such as those used in the 
AT can be installed in addition to or in 
place of some of the 32-bit RAM. How¬ 
ever, the performance difference be¬ 
tween the 16-bit expansion bus and the 
32-bit memory bus is so extreme that 
16-bit memory should be added only 
as a last resort. 

Another convenient feature of the 
Deskpro 386 is its processor speed con¬ 
trol, which is designed to provide high 
performance while maintaining compat¬ 
ibility with programs that depend on 
program execution speed for critical 
timing functions. With the SPEED op¬ 
tion of the MODE command (or BIOS 
interrupt 16H, AH=F0H), the processor 
speed can be set anywhere from slightly 
less than the 4.7 MHz used in the PC’s 
8088 to 16 MHz. Unlike the Deskpro 
286, the Deskpro 386 does not support 
special keyboard sequences to switch 
in or out of any of these modes (the 
Deskpro 286 uses Ctrl-Alt-/ to change 
speeds). Only the MODE command or 
BIOS interrupt 16H can be used. Five 
options of the MODE command affect 
the processor speed: 

MODE SPEED = COMMON 
MODE SPEED = FAST 
MODE SPEED = HIGH 
MODE SPEED=AUTO 
MODE SPEED = num 

The COMMON setting causes the 
80386 to simulate the speed of a 6-MHz 
80286. FAST simulates an 8-MHz 80286. 
HIGH sets the speed to a full 16 MHz. 

In AUTO mode, the default speed 
setting, the processor operates at full 
16-MHz speed until a diskette access oc¬ 
curs; then it switches to 8-MHz (FAST) 
mode until the disk access is complete, 
when it switches back to 16 MHz. The 
BIOS recognizes when to switch speeds 
by keying on the diskette’s motor-on 
switch. The AUTO mode is intended to 
help users install and run copy-pro- 


MARCH1987 


59 



DESKPRO 386 


TABLE 1: MODE SPEED Parameters 


SYSTEM SPEED SIMULATED 

MODE COMMANDS 

8088-based PC 

MODE SPEED=3 

6-MHz AT 

MODE SPEED=COMMON or MODE SPEED=16 

8-MHz AT 

MODE SPEED=FAST or MODE SPEED=18 

16-MHz 80386 

MODE SPEED=HIGH or MODE SPEED=50 


The MODE SPEED command can be used to change operating speed. This table 
correlates the MODE SPEED parameters with the numeric values entered. 


tected programs, particularly those that 
require a key diskette. As Compaq real¬ 
ized, most copy-protection schemes are 
speed sensitive. With the processor 
slowed just during diskette accesses, the 
copy-protection mechanism can succeed 
without forcing the computer to run 
permanently at the slower speed. After 
installation (or key-diskette checking) is 
complete, the Deskpro 386 returns to 
16-MHz operation. 

The last form of the MODE SPEED 
command allows users to specify a 
numeric value from 1 to 30 for the pro¬ 
cessor speed. This form of the com¬ 
mand corresponds to the way the speed 
is set using BIOS interrupt 16H and 
permits users to select from a large 
variety of speeds. Table 1 shows how 
these numbers correspond with the 
other MODE SPEED options. 

The Deskpro 386 implements the 
speed controls by using the 80386 
HOLD signal. The 80386 is in a HOLD 
state whenever a memory refresh oc¬ 
curs. Therefore, to slow down the pro¬ 
cessor, the refresh period is simply ex¬ 
tended, reducing the amount of time 
that the 80386 is actually executing 
instructions. This method of slowing 
down the processor is better than 
adding memory wait states because it 
does not affect the bus bandwidth or 
the latency for direct memory access 
(or other bus master operations). How¬ 
ever, extremely tight program loops 
that execute within the time of a refresh 
cycle and require a slowed processor 
might not work correctly. 

The Deskpro 386 uses a signal 
from an 8254 interval timer to lengthen 
the refresh period. The 8254 timer is 
programmed using the values in the 
BIOS interrupt 16H; function request 
AH=F0H; the MODE SPEED=num com¬ 
mand; or the values that correspond to 
the other MODE SPEED options. 

Normally, the processor speed is 
set in its default state (AUTO). This 
permits 16-MHz speed during most sys¬ 
tem operations, but still allows copy¬ 
protected programs to be loaded from 
diskette. The other settings can be use¬ 
ful for running speed-sensitive pro¬ 
grams such as games. One especially 
nice touch is that any selected speed 
survives a warm reboot of the comput¬ 
er. This means that even action games 
written especially for a 4.77-MHz 8088 
can be run by first selecting a low 
speed, such as MODE SPEED=03 and 
then rebooting the computer with the 
game disk in drive A:. 

Because the Deskpro 386 needs an 
8254 signal for its speed control, it con¬ 
tains two 8254 timers, one more than 


the AT. Both timers have three separate 
counters. In the first timer, which pro¬ 
vides the same functions as the 8254 on 
the AT, counter 0 is connected to the 
8259 interrupt controller and provides 
the system timer interrupt for time-of- 
day, diskette time-out, and other system 
functions; counter 1 generates the re¬ 
fresh request signal; and counter 2 gen¬ 
erates the tone for die speaker. 

The second 8254 timer provides 
functions not found in the AT. Counter 
1 of the second timer is unused; coun¬ 
ter 2 extends the refresh period as just 

0 ne feature that the Desk- 
pro 386 might be expected 
to contain, but does not, 
is a socket for an 80387 
numeric coprocessor. 


described; and counter 0 provides one 
of the most interesting features of the 
machine. It is a fail-safe timer that can 
generate interrupts on the nonmaskable 
interrupt line at regular intervals. The 
Compaq documentation states that 
operating systems can use this signal to 
prevent the system from locking up. It 
also claims that this function is intended 
for future operating system use. There¬ 
fore, this system “heartbeat” might be 
included in versions of DOS developed 
for the 80386 processor. A switch on 
the system board can turn the fail-safe 
timer on or off. 

A Motorola MCI46818 serves as the 
Deskpro 386’s realtime clock and stores 
configuration information. This compo¬ 
nent, which also is used in the AT, con¬ 
tains 64 bytes of memory. The first 14 
are used by the clock, and the last 50 
are used to save the system configura¬ 
tion when the power is turned off. 
Three of the bits in configuration byte 
45 (2DH) store additional information 
not maintained by the AT: bit 0 indi¬ 


cates whether Compaq’s dual-mode 
monitor is installed; bit 1 indicates 
whether the audible key-click feature 
is enabled; and bit 3 indicates whether 
a Compaq or non-Compaq graphics 
adapter is installed. 

The Deskpro 386 has other fea¬ 
tures not found in the AT, most of 
which are also available in the Deskpro 
286. These include the Ctrl-Alt-plus and 
Ctrl-Alt-minus sequences to increase or 
reduce the loudness of the key clicks 
and the optional tape backup unit. 

The speed and capacity of the tape 
backup unit has been improved over 
the units previously available with the 
Deskpro computers. Tape backup now 
is twice as fast as earlier models; and 
the new unit can back up 40MB of in¬ 
formation instead of 10MB, because it 
uses the 3M DC2000 3^-inch cartridges 
rather than the DC1000 cartridges. For 
compatibility with earlier Compaq com¬ 
puters, the new tape unit can read the 
DC1000 tapes produced by other Com¬ 
paq tape units, but it cannot write to 
them. The new tape unit can be in¬ 
stalled in the Deskpro 286. 

Unfortunately, on several occasions 
the tape drive in the tested unit refused 
to back up data successfully. It locked 
up during the middle of a backup oper¬ 
ation and could not be restarted except 
by turning the power off and on again. 
The backup operation was tried at sev¬ 
eral processor speeds, but the errors 
still occurred frequently. These prob¬ 
lems did not reappear when another 
unit was tested, but the reliability of 
Compaq’s higher-capacity tape drives 
should be questioned nonetheless. 

One feature that the Deskpro 386 
might be expected to contain, but does 
not, is a socket for an 80387 numeric 
coprocessor. This omission probably 
occurred because the design of the 
80387 was incomplete when the Desk- 
pro 386 was developed. The machine 
does have a socket for the 80287, which 
has a different number of pins and a 
different pin layout than the 80387. A 
further drawback is that the Deskpro 
386 supports only 4- and 8-MHz 80287s, 
not the 10-MHz parts that are now 


60 


PC TECH JOURNAL 














widely available. A switch on the system 
board indicates whether a 4- or 8-MHz 
80287 is installed. 

LOOKING INSIDE THE 386 

The box housing the system unit of the 
Deskpro 386 is virtually identical to that 
of the Deskpro 286, so the joys and sor¬ 
rows of installation are also the same. 
On the negative side, Torx screws are 
used in most of the fastenings, and Torx 
screwdrivers are often difficult to find. 
Further, a metal brace is mounted on 
the left side of the system unit, immedi¬ 
ately over slot one (the 32-bit slot). To 
take out the memory board, the brace 
has to be removed. 

On the positive side, the cover of 
the system unit is held on by fewer 
screws on the rear panel so it is easier 
to remove than the cover of the Desk- 
pro 286. Instead of selecting the correct 
three of eight screws, all of which look 
as if they need to come out, users now 
choose three of four screws. 

Compaq has improved the installa¬ 
tion process immensely by gluing a 
quick-reference card to the top of the 
peripheral bay enclosure. This card 
contains a drawing of the system board 
with callouts identifying all the expan¬ 
sion cards, the 80287 socket, the system 
board switches, the power supply and 
power connectors, and the system 
ROMs. In addition, it identifies the drive 
connectors, lists the settings for the sys¬ 
tem board switch, and lists the jumper 
selections foir the memory board and 
disk controller board. With this conve¬ 
nient reference, the experienced user 
can perform almost all installation tasks 
without opening a manual. 

The peripheral bay in the Deskpro 
386 is capable of containing four half¬ 
height drives. This is a smaller area 
than the AT provides, but the extra 
space underneath the bay is filled with 
shock-mounting material to protea the 
drives from damage. 

One well-designed feature is the 
easy-to-reach location of the 80386 and 
80287 sockets on the left side of the 
system board. The B1 stepping of the 
80386 is used in the Deskpro 386. Al¬ 
though this version of the 80386 has 
several programming anomalies, Com- . 
paq’s technical reference contains 10 
pages of valuable information that de¬ 
scribes how to avoid problems with 
the stepping of the 80386. Most of the 
anomalies are of interest only to de¬ 
signers of proteaed-mode operating 
systems. Application programmers will 
rarely encounter any problems. 

As shown in photo 4, the Deskpro 
386 has eight expansion slots—three 8- 


bit slots (one of them half size), four 
16-bit slots, and one 32-bit slot. The 8- 
bit and 16-bit slots operate at 8 MHz for 
compatibility with boards designed to 
operate in the AT. The 32-bit slot is slot 
1, which is the leftmost slot in the 
photo. This slot consists of two connec¬ 
tors: an 80-pin conneaor positioned at 
the front of the system unit and a small 
one next to slot 2 that is actually a sec¬ 
ond set of power and ground signals 
for improved power distribution. 

The system memory board, shown 
in photo 3, fits into the 32-bit slot. The 
board comes standard with 1MB of 
RAM, which is soldered in place. Sock¬ 
ets are available for an additional mega¬ 
byte on the board, as are connectors for 
adding a single piggyback card. The 
memory board and piggyback card ac¬ 
cept only static-column RAM chips. With 

T \e system memory board 
comes standard with 1MB of 
RAM, which is expandable to 
2MB. More can be added 



the largest piggyback card installed, 
10MB of RAM can be accessed from the 
system memory board. 

The system board has only one 
switch block. It specifies the monitor 
type, default speed setting, whether the 
numeric coprocessor is present and, if 
so, the speed at which it runs, and 
whether the fail-safe timer is enabled. 

Of the remaining seven slots, two 
are occupied with a 40MB hard disk— 
one 8-bit slot by the graphics controller 
and one 16-bit slot by the multipurpose 
hard-disk controller board. The multi¬ 
purpose board controls the 40MB hard 
disk, the diskette drives, and the tape 
drive. On the units with 70MB or 
130MB hard disks, another 16-bit slot is 
occupied, because the larger capacity 
drives require a separate controller. 

In the model 40 unit, the multipur¬ 
pose hard-disk controller is conneaed 
to two diskette drives (a 1.2MB drive 
and a 360KB drive), a 40MB hard disk, 
and a 40MB tape backup unit. The two 
diskette drives and the tape backup unit 
slots are attached to a single connector 
on the controller in a daisy-chain fash¬ 
ion. The controller supports a second 
40MB drive, but the power supply, the 
same 192-watt model used in the Desk- 


pro 286, is not powerful enough to han¬ 
dle two hard disks and a tape drive. 
Therefore, if a second hard disk is 
added, the tape backup unit must not 
be included. To pack all of that func¬ 
tionality into a single controller board, 
Compaq uses special 40MB disks. The 
drives contain much of the control cir¬ 
cuitry on the drive circuit board rather 
than on the controller board. 

The 70MB and 130MB drives do 
not connea to the multipurpose con¬ 
troller board. Both of these drives use 
the ESDI interface, so they require a 
separate controller card that supports a 
single drive. Both controllers use the 
same I/O addresses when communicat¬ 
ing with the hard disks, so if a 70MB 
or 130MB drive is included, no 40MB 
drives are supported. 

Although only the 40MB, 70MB, 
and 130MB drive options are available 
from Compaq, the ROM BIOS supports 
47 types of hard disks. Table 2 lists the 
drive types and charaaeristics. All the 
Deskpro 386 drive types are supported 
by the AT, with the same type numbers. 

A serial and a parallel port are also 
contained on the multipurpose hard¬ 
disk controller. The serial port uses a 9- 
pin, male, D-shell conneaor. The paral¬ 
lel port uses a 25-pin, female, D-shell 
conneaor. These conneaors are the 
same as those used in the AT’s parallel/ 
serial card. The serial port can be 
switched between COM1 and COM2. 

The parallel port is set to LPT1, but it 
can be disabled if it conflicts with the 
ports on other expansion cards. 

STANDARD SOFTWARE 

GW-BASIC version 3.0 and MS-DOS 3.10 
are available at extra cost with the 
Deskpro 386. Included with this pack¬ 
age is a DOS 3.2 support disk that con¬ 
tains a replacement set of disk utilities 
that works with IBM’s PC-DOS 3.2 and 
is aware of the Deskpro 386’s 40MB, 
70MB, and 130MB hard disks. 

Compaq’s DOS 3.1 disk contains all 
the items that are contained in IBM’s 
DOS 3.1, plus some extras. One of the 
added files is DISKINIT, a utility that 
simplifies setting up a hard disk. It 
performs the FDISK, ENHDISK, and 
FORMAT functions, creates CONFIG.SYS 
and AUTOEXEC.BAT files, and copies 
both DOS diskettes into a subdireaory 
called /DOS. These operations are simi¬ 
lar to the ones that are performed by 
the SELECT command in DOS 3.2. 

Other extra programs include 
SETCLOCK, which allows users to reset 
the date and time without funning the 
set-up program; CMPQADAP, a utility 
for modifying the keyboard driver for 


MARCH 1987 


61 



AST Modems. 

They're Just Your Speed. 



AST introduces a new family of standalone 
and internal PC modems designed for the 
way you work. 

Whether you're shopping for a state-of-the- 
art, high-speed 19.2K bps modem with error cor¬ 
rection; a low-cost 1200 bps, Hayes™compatible 
modem loaded with features... or, anything in 
between... AST has just your speed. 

AST's new modem family includes 1200, 
2400, 4800 and 19,200 bps modems in both 
standalone (synchronous and asynchronous) 
and internal PC (asynchronous) models. 

Fast and and Reliable. 

The AST-2X9600™ standalone and AST- 
2X9600™ internal PC modems save thousands 
of dollars per year in telephone-line charges 
when used for intensive, high-volume file trans¬ 
fer applications. Fast, 19,200 bps speed is 
achieved using the industry standard MNP™ 
data compression. While data integrity is 
assured with MNP error correction. 

For less intense applications, the AST- 
2X2400™ and AST-2X2400B™ provide data com¬ 
pression and error correction at speeds up to 
4800 bps. 


Low-Cost, Hayes-Compatible. 

The AST-1200™ and AST-1200B™ provide 
reliable, 1200 bps dial-line communications for 
a variety of applications, including popular 
interactive and bulletin-board services. 



Faster, yet price competitive with many 1200 
bps modems, are AST's two 2400 bps modems— 
AST-2400™ and AST-2400B.™ They're the right 
solutions for a mix of interactive applications 
and low-volume file transfers. 


Ask for AST modems by name. Visit your 
local, authorized AST dealer and compare AST 
modem prices and features. There's an AST 
modem just your speed. 

Send today for AST's helpful Modem Selection 
Guide. It'll help you select the modem that's 
right for your particular application. For your 
free copy of this guide send the attached cou¬ 
pon to AST Research, Inc., 2121 Alton Ave., Irvine, 
CA 92714-4992, Attn. M Cor call (714) 863-1480. 



ResenncH inc. 


^Yes! Send me information on AST Modems today! 

| Name_ J 

j Title_ j 

I Company_ | 

| Address_ j 

I City/State/Zip_ i 

Telephone_ 01PCTE086A01MD , 

1 PCTJ3/87 1 

I Send to: AST Research, Inc., 2121 Alton Aw. Irvine. CA 92714-4992. Attn: M C I 


AST markets products worldwide-in Europe call: 44 1 568 4350; in the Far East call: 852 0499 9113; in Canada call: 416 826 7514. AST registered and AST-1200. AST 1200B, AST-2400. AST-2400B. AST-2X2400, AST2X2400B. AST-2X9600 and AST-2X9600B trademarks of AST 
Research. Inc. MNF trademark of Microcom, Inc. Hayes trademark of Hayes Computer Products. Copyright © 1986 AST Research, Inc. All righLs reserved. 














DESKPRO 386 

international character sets; KEBDA, 
KEYBNO, KEYBSU, and KEYBSV, which 
are four additional keyboard drivers; 
GRAFTABL, which enables the color/ 
graphics adapter when operating in 
graphics mode to display characters 
whose ASCII values are greater than 
127; TAPE, a cartridge tape utility that 
formats a tape, backs up files to tape, 
restores files, lists a tape directory, and 
erases tapes; and SETUP, which stores 
configuration information in the mem¬ 
ory of the realtime clock chip. 

Software supplied with the Desk- 
pro 386 includes ENHDISK.SYS, a driver 
that assigns a separate drive letter to 
each partition of a hard disk. This is 
necessary for using all the storage on 
the Deskpro 386s large hard disks, be¬ 
cause DOS limits partitions to 32MB. 
Two CEMM programs (CEMM.EXE and 
CEMM.COM) are supplied, as well as 
INST386, which generates or modifies 
the CONFIG.SYS file in order to iden¬ 
tify CEMM.EXE and VDISK.SYS as device 
drivers and indicate the amount of 
memory to be used for expanded mem¬ 
ory and virtual disks. 

Finally, Microsoft provides a diag¬ 
nostic program called TEST that is the 
equivalent of IBM’s standard diagnos¬ 
tics. Curiously, this program contains a 
test for the Microsoft InPort mouse. 
Compaq was rumored to be including 
an InPort connector on its Enhanced 
Graphics Board, but it is not contained 
on the released version. Compaq may 
have forgotten to remove the diagnostic 
test when it decided not to include the 
InPort connector. 

Compaq continues to score high 
marks with its technical documentation. 
Included with every Deskpro 386 is a 
useful Operations Guide. Users also can 
purchase the excellent two-volume 
Technical Reference Guide. 

The Technical Reference Guide is 
one of the finest works of its kind and 
an essential purchase for anyone who is 
curious about how the Deskpro 386 
really works. It is clearly written and 
provides enough background material 
so that even novices can understand the 
complex topics it covers. The explana¬ 
tion of the 80386’s B1 stepping is espe¬ 
cially good. Unfortunately, much of the 
information that IBM places in its Guide 
to Operations manuals is available from 
Compaq only in this separately priced 
reference. The explanation of switch 
settings for the multipurpose disk con¬ 
troller board is one example. 

Compaq produces a single set of 
DOS documentation for all Compaq 
computers, with special supplements 
for the Deskpro 386. While this may be 


TABLE 2: Disk Drives Supported 


DRIVE 

TYPE 

NO. OF 
CYLINDERS 

NO. OF 
HEADS 

CAPACITY 

(MB) 

LANDING 

ZONE 

CYLINDER 

PRECOMPEN¬ 

SATION 

CYLINDER 

SECTORS/ 

TRACK 

1 

306 

4 

10.65 

305 

128 

17 

2 

615 

4 

21.41 

638 

128 

17 

3 

615 

6 

32.12 

615 

128 

17 

4 

1,024 

8 

71.30 

1,023 

512 

17 

5 

940 

6 

49.09 

939 

512 

17 

6 

697 

5 

30.33 

696 

128 

17 

7 

462 

8 

32.17 

511 

256 

17 

8 

925 

5 

40.26 

924 

128 

17 

9 

900 

15 

117.50 

899 

— l a 

17 

10 

980 

5 

42.65 

980 

-1 

17 

11 

823 

10 

71.63 

822 

-1 

17 

12 

925 

9 

72.46 

924 

128 

17 

13 

612 

8 

42.61 

611 

256 

17 

14 

754 

11 

72.19 

753 

-1 

17 

15 

0 

0 

0 

0 

0 

0 

16 

612 

4 

21.31 

612 

0 

17 

17 

980 

5 

42.65 

980 

128 

17 

18 

966 

6 

50.45 

966 

128 

17 

19 

1,023 

8 

71.23 

1,023 

-1 

17 

20 

733 

5 

31.90 

732 

256 

17 

21 

733 

7 

44.66 

732 

256 

17 

22 

768 

6 

40.11 

768 

-1 

17 

23 

771 

6 

20.16 

771 

-1 

17 

24 

966 

14 

117.71 

966 

-1 

17 

25 

966 

16 

134.53 

966 

-1 

17 

26 

1,023 

14 

124.66 

1,023 

-1 

17 

27 

966 

10 

84.08 

966 

-1 

17 

28 

771 

3 

20.11 

771 

-1 

17 

29 

578 

4 

20.09 

578 

-1 

17 

30 

615 

4 

31.49 

615 

128 

25 

31 

615 

8 

62.98 

615 

128 

25 

32 

966 

3 

50.45 

966 

-1 

34 

33 

966 

5 

84.08 

966 

-1 

34 

34 

966 

7 

117.71 

966 

-1 

34 

35 

966 

8 

134.53 

966 

-1 

34 

36 

966 

9 

151.35 

966 

-1 

34 

37 

966 

5 

84.08 

966 

-1 

34 

38 

1,023 

9 

155.56 

1,023 

-1 

33 

39 

1,023 

11 

190.13 

1,023 

-1 

33 

40 

1,023 

13 

224.70 

1,023 

-1 

33 

41 

1,023 

15 

259.27 

1,023 

-1 

33 

42 

1,023 

16 

284.93 

1,023 

-1 

34 

43 

756 

4 

40.26 

756 

-1 

26 

44 

756 

2 

20.13 

756 

-1 

26 

45 

756 

4 

40.89 

768 

-1 

26 

46 

768 

2 

20.45 

768 

-1 

26 

47 

966 

5 

61.82 

966 

128 

25 

a The - 

1 values mean that no write precompensation is used for the drive. 



The Deskpro 386 BIOS supports 47 drive types. These include all the drive types 
(with the same type numbers) supported by the IBM AT, plus many more. This 
allows a high degree of flexibility in the selection of disk drives. 


MARCH 1987 


63 











B/IRR 


•J>uvi0't2r-7na*^tame gomm v mm &x**- 


BARR SYSTEMS, INC. □ 2830 NW 41 Street □ Gainesville, FL 32606 
904-371-3050 □ 800-BARRSYS □ Telex 6715114 BARR UW 


Just insert the 208AB modem card, install 
the menu-driven software, and instantly the 
PC becomes an RJE workstation. Plug the 
cable into the telephone outlet, send a com¬ 
mand, and receive an immediate response 
from the mainframe—invoices, production 
reports, laboratory analyses, checks...all done 
for you automatically. The BARR/HASP soft¬ 
ware bypasses the high-overhead TSO and 
CMS interactive facilities, and instead uses 
the mainstream communications facilities of 
the host —MVS/JES, VM/RSCS, CDC/NOS/ 

RBF— saving time and money. 

What’s more, BARR/208AB and BARR/HASP 
were designed for beginners and experts alike 
with all features quickly accessed through simple 
menus. And the PC is always free for data entry and word 
processing, even while it’s communicating with the mainframe. 


BARR/208AB 
Modem Features 

•Auto-dial 
•Auto-answer 
•Advanced digital 
signal processing 
•Automatic night dialing 
•Self-test diagnostics 


BARR/HASP 
Software Features 
•Multiple printer support 
up to 600 lines-per-minute 
•LAN gateway 
•PC to PC file transfer 
•Concurrent DOS 
•Simultaneous sending and 
receiving files 


•Bell 208A/B compatible modem 

•Emulates IBM 3777-2 and HASP on IBM 360/20 


The complete communications package includes 
BARR/208AB modem, BARR/HASP software, 
manuals, and cable. *2290. Trial evaluation available 
Call BARR SYSTEMS today for more information 
about how this great combination can help in your 
business. 800-BARRSYS 


Send Data and Receive 
Reports at 4800 bps... 


BARR/208AB synchronous modem and 
BARR/HASP multi-tasking software for 
the IBM PC, XT, AT and compatibles. 


CIRCLE NO. 147 ON READER SERVICE CARD 


'tymit&flf 















DESKPRO 386 

convenient for Compaq, it creates a 
great deal of confusion for the user. 

The DOS 31 documentation and 
diskettes form a generic package that is 
available with all Compaq computers. 
Two other diskettes, the User Prog and 
Supplemental User Prog diskettes, con¬ 
tain additional utilities as well as up¬ 
dated versions of certain programs and 
versions designed especially for the 
Deskpro 386. For example, the User 
Prog diskette contains a new version of 
the TAPE program that must be used in¬ 
stead of the version on the DOS 
diskettes. The Supplemental User Prog 
diskette contains versions of VDISK and 
the MODE command designed for the 
80386 processor. Nowhere does the 
DOS manual mention the existence of 
these updated programs. Nor does the 
DOS manual describe the CEMM pro¬ 
gram. The Deskpro 386 Operations 
Guide mentions the new VDISK, CEMM, 
and MODE versions, but not the new 
TAPE command. With multiple copies of 
programs and utilities, the user can eas¬ 
ily install the wrong versions. The man¬ 
uals do nothing to explain the situation 
or ease the problem. 

Instead of the usual 90-day war¬ 
ranty, Compaq provides a one-year war¬ 
ranty for the Deskpro 386, including the 
Enhanced Graphics Board and Compaq 
Color Monitor. If users experience 
problems during that time, they can 
return the machine to their dealer for 
repairs or replacement. 

TEST RUN 

The Deskpro 386 was subjected to the 
same tests used throughout this series 
on AT compatibles, although they were 
modified to run on 80386-based com¬ 
puters. First, commonly used software 
and hardware products were installed 
to check for compatibility. Then the PC 
Tech Journal AT Evaluation Suite of 
compatibility and performance tests was 
run and the results were compared 
with those of the 8-MHz IBM AT. (For 
details on how these tests were modi¬ 
fied, see “Updating the Evaluation 
Suite,” Ted Forgeron, Paul Pierce, and 
Steven Armbrust, this issue, p. 70). 

All of the hardware products tested 
with the Deskpro 386 worked without 
problem, including an 80287 numeric 
coprocessor, an Intel Above Board with 
4MB of memory, Microsoft serial and 
bus mice, a Hayes Smartmodem 1200, 
and the Compaq Enhanced Graphics 
Board. One item worth special mention 
is that expanded memory on the Above 
Board (or on any expanded memory 
board) cannot be used when Compaq’s 
CEMM driver is installed. The reason 


for this is simply because only one ex¬ 
panded memory driver can be active at 
any one time in one computer. 

Software installed in the Deskpro 
386 included Microsoft Windows 1.01 
and Microsoft Word 3.1 to test graphics 
capabilities and the mouse; Borland’s 
SuperKey 1.11 A, SideKick 1.56A, and 
Turbo Lightning 1.101 A to test memory- 
resident programs; Living Videotext’s 
Ready! 1.00C and Intel’s QUIKMEM2 
RAM disk to test expanded memory; 
both the IBM and Compaq versions of 
VDISK to check the computer’s ability 
to switch in and out of protected mode; 
Fastback from Fifth Generation Systems 
to test direct memory access; and the 
IBM Advanced Diagnostics programs to 
perform a general check-up. 

T he Technical Reference 
Guide is an essential pur¬ 
chase for anyone who is 
curious about how the Desk- 
pro 386 really works. 


Almost all the programs worked 
without error. Only SuperKey failed 
completely by locking the enhanced 
keyboard, but a new version (1.13) re¬ 
leased specifically to solve this problem 
worked as advertised on the Deskpro 
386. Fastback performed without errors, 
but the restore program required the 
processor speed to be set to 8 MHz. 

The only other program that showed 
a discrepancy was the IBM Advanced 
Diagnostics program, which recognized 
only 640KB of the Deskpro 386’s first 
1MB of RAM. The remaining 360KB is 
mapped to addresses that are just below 
16MB, where the Diagnostics program 
could not find it. 

The expanded memory programs 
(Ready! and QUIKMEM2) were tested by 
running them out of CEMM memory; 
both ran without problems. 

The IBM VDISK program also 
worked as intended. This is significant 
because it implies that even though the 
80386 can easily switch between pro¬ 
tected and real modes, the Deskpro 386 
also supports the more complicated 
method required for the 80286 (which 
involves resetting the processor). The 
Deskpro 386’s VDISK program is writ¬ 
ten especially for the 80386 processor 
and does not need to reset the proces¬ 
sor to go back to real mode. 


One other program tested on the 
Deskpro 386 did not run correctly. 

Gold Hill Computers’ Golden Common 
LISP (GCLISP) large memory version 
2.0, a program that switches in and out 
of protected mode to execute code out 
of extended memory, caused the com¬ 
puter to perform a warm reboot. Gold 
Hill attributes the problem to the ag¬ 
gressive, nonstandard way that GCLISP 
uses 80286 protected mode. Gold Hill 
plans to market a Deskpro 386-compati¬ 
ble version of GCLISP in 1987. 

The PC Tech Journal compatibility 
and performance tests consist of five 
programs: ATBIOS checks the BIOS and 
BIOS data areas; ATKEY checks for key¬ 
board compatibility; ATFLOAT measures 
floating-point operations with the nu¬ 
meric coprocessor installed; ATDISK 
measures hard-disk performance; 
ATPERF measures processor and nu¬ 
meric coprocessor clock rates, as well 
as memory access times. Table 3 lists 
the results of these tests, and figure 5 
presents bar-graph comparisons be¬ 
tween the 8-MHz AT and Deskpro 386 
for RAM instruction fetch, RAM read and 
write times, ROM read times, and EMM 
read and write times. 

ATBIOS showed that the Deskpro 
386 uses the BIOS data area in the 
same way as the AT. It listed a Compaq 
copyright and a date of 8/19/86. 

ATKEY verified the keyboard com¬ 
patibility. The original AT keyboard also 
worked with the Deskpro 386. 

ATFLOAT showed that the Deskpro 
386 can process floating-point opera¬ 
tions 1.7 times as fast as an 8-MHz AT. 
Given that the processor runs at 16 
MHz and the numeric coprocessor at 8 
MHz (compared to 8 and 5.33 on the 
AT), this value seems appropriate. 

ATDISK proved that the 40MB 
drive in the Deskpro 386 is a high-per¬ 
formance model consistent with the 
requirements of an 80386-based com¬ 
puter. It showed considerably better ac¬ 
cess times than the IBM drive, and it is 
formatted and works effectively with an 
interleave of 2, causing a higher effec¬ 
tive transfer rate than the IBM drive 
(which uses an interleave of 3). 

The most interesting results were 
obtained from ATPERF, which demon¬ 
strated that the Deskpro 386 is an ex¬ 
tremely fast computer, with instruction 
fetches, as well as memory reads and 
writes, almost three times as fast as an 
8-MHz AT. (Because the system nor¬ 
mally runs at 8 MHz when the diskette 
drive is accessed, ATPERF must be run 
from the hard disk or SPEED must be 
set to HIGH using the MODE command 
to achieve these results.) 


MARCH 1987 


65 









DESKPRO 386 

The RAM read and write times and 
the corresponding wait states show the 
values expected from a high-perfor¬ 
mance, 32-bit processor. ATPERF shows 
that reading from and writing to RAM 
within a 2KB page indeed occurs at 
zero wait states. 

The modified version of ATPERF 
uses PUSHA instructions to measure 
RAM writes. These are fast instructions 
that do not result in idle bus cycles. 

Each PUSHA instruction involves eight 
PUSH instructions (pushing all of the 
registers), and therefore it writes to 
eight consecutive memory locations that 
are almost always within the same 2KB 
page. Memory is accessed outside the 
page when the processor fetches a new 
instruction. However, each PUSHA is a 
byte instruction, so each instruction 
fetch during this test fetches four sepa¬ 
rate PUSHA instructions (the 80386 ac¬ 
cesses four bytes at a time). As a result, 
each instruction fetch results in 32 
memory accesses (eight pushes from 
each of four PUSHA instructions). With 
this mechanism, the effect of accessing 
memory outside of a page during in¬ 
struction fetch is barely noticeable and 
is not enough to affect the number of 
wait states measured. 

The ROM read times are also 
worth discussing. ATPERF checks the 
ROM read time by using MOVS instruc¬ 
tions to copy the system BIOS to RAM. 
However, in the Deskpro 386 the sys¬ 
tem BIOS reads are actually performed 
from RAM instead of ROM. Therefore, 
the ROM read times are, in fact, equal 
to the RAM read times as indicated in 
table 3, with the actual performance de¬ 
pendent upon the extent to which suc¬ 
cessive memory accesses occur within 
the same 2KB page. 

The ROM read test is a general- 
purpose test that is not customized for 
the Deskpro 386. It subtracts the aver¬ 
age RAM write time that was discussed 
previously from the average time re¬ 
quired to copy ROM to RAM in order to 
determine the average ROM read time. 
In the case of the Deskpro 386, the av¬ 
erage RAM write time is measured at 
zero wait states, whereas the RAM 
writes in the ROM copy operation occur 
at two wait states (because the MOVS 
source and destination addresses are 
not in the same 2KB page.) Therefore, 
subtracting the zero-wait-state average 
write time yields an inaccurate value for 
average ROM read time. 

The value that is displayed (0.39 
microseconds) is quite useful, however, 
for determining the average time 
needed for RAM read/write accesses that 
are not contained within the same 2KB 


TABLE 3: Compatibility and Performance Tests 



8-MHz AT, 
30MB DISK" 

DESKPRO 386, 

40MB DISK 

ATBIOS 

ROM BIOS date 

11/15/85 

08/19/86 

ATPERF 

Average RAM instruction fetch (|xs) 

BYTE 

.250 

.19 (130)o 

WORD 

.403 

.14 (280) 

DWORD 

N/A 

.23 

Average RAM read time (|xs) c 

BYTE 

.401 

.13/.26 (298/154) 

WORD 

.401 

.13/.26 (298/154) 

DWORD 

N/A 

.14/.26 

Average RAM write time (|xs) c 

BYTE 

.401 

.13/ 26 (307/154) 

WORD 

.401 

.13/ 26 (307/154) 

DWORD 

N/A 

.13/26 

Average ROM read time (|xs) 

BYTE 

.401 

Same as RAM read 

WORD 

.401 

Same as RAM read 

DWORD 

N/A 

Same as RAM read 

Average CGA video write time (|xs) 

BYTE 

1.208 

1.21 (100) 

WORD 

2.415 

2.42 (100) 

DWORD 

N/A 

4.83 

Average EMM read time (pts) 

BYTE 

.402 

.13 (301)-* 

WORD 

.402 

.13 (301V 

DWORD 

N/A 

.14 

Average EMM write time (|xs) 

BYTE 

.402 

.13 (306) 

WORD 

.402 

.13 (306) 

DWORD 

N/A 

.13 

CPU clock rate (MHz) 

8.0 

16.0 (200) 

Numeric coprocessor clock rate (MHz) 

3.3 

8.0 (150) 

Refresh overhead (%) 

7.1 

15 

RAM read/write wait states 

1/1 

0/0 

ROM read wait states 

1 

2 

Video write wait states (CGA) 

8 

17 

EMM read/write wait states 

1/1 

0/1 d 

ATFLOAT 

Performance as percentage relative to AT 

100 

107 

ATDISK 

Sectors/track 

17 

17 

Heads 

5 

3 

Cylinders 

731 

978 

Total space (million bytes) 

31.81 

42.56 

Track-track seek time (ms) 

6.0 

4.1 

Average seek time (ms) 

37.1 

27.6 

Effective transfer rate (KB/sec) 

170.1 

254.5 

DOS file I/O (sec) 

7.3 

7.4 

Interleave 

3 

2 

a The figures for the IBM AT are the average results from several machines, whereas the results from 
the Compaq Deskpro 386 are taken only from the review sample model. 

b Figures shoivn in parentheses represent the relative performance expressed as a percentage compared 
to PC Tech Journal’s baseline machine, the 8-MHz, 30MB AT. 

c For the Deskpro 386, first number is for memory access within the same 2KB page; the second is not 

within the same 2KB page. 

d EMM measurements were taken using the Deskpro 386’s CEMM driver and built-in memory. 


RAM read/write times are from 1.5 to 3 times faster that for the AT, depending on 
whether or not successive accesses are written to the same 2KB page. 


66 


PC TECH JOURNAL 










The Deskpro 386 can access a 3 2-bit double word faster than the AT can perform 
even one of the two 16-bit word accesses that it uses to perform the same task. 


page. This value is determined by ad¬ 
ding the previously subtracted average 
RAM write time to the average ROM 
read time displayed by ATPERF and 
then dividing that total by two (because 
the RAM reads and writes take the same 
amount of time). The resultant 0.26 mi¬ 
croseconds per double word is the ex¬ 
pected average time for a two-wait-state 
RAM read/write. 

FASTEST ON MARKET 

For anyone who demands high perfor¬ 
mance and AT compatibility, the Com¬ 
paq Deskpro 386 is definitely the com¬ 
puter of choice. At the time this review 
was written, it was easily the fastest AT 
compatible on the market, as well as 
one of the most compatible. The addi¬ 
tion of Compaq’s special touches, such 
as processor speed control, CEMM, and 
excellent documentation, make this 
computer even more desirable. Perhaps 
its best and brightest feature is its 
80386, which offers a bridge between 
today’s real-mode applications and to¬ 
morrow’s more powerful multitasking 
and protected mode programs. 

Only a few areas need improve¬ 
ment in the Deskpro 386. The absence 
of a socket for the 80387 numeric co¬ 
processor will keep this machine’s float¬ 
ing-point performance less than that 
provided by other new 80386-based ma¬ 
chines that do support the 80387. Even 
other computers that contain 10-MHz 
80287s will be able to edge the Desk- 
pro 386’s 4- and 8-MHz 80287 in float¬ 
ing-point performance. Other areas of 
concern are the tape backup drive, be¬ 
cause one of the units examined did 
not work properly, and the Compaq 
Color Monitor, because it does not 
match the quality of some of the other 
enhanced color monitors that are cur¬ 
rently on the market. 

These are problems, however, that 
can be remedied, and they are far out¬ 
weighed by the outstanding perfor¬ 
mance and quality of the Deskpro 386. 
Even IBM will have a hard time topping 
this machine. 1'"mK1 

Compaq Computer Corp. 

2033 FM 149 
Houston, TX 77070 
713/370-0670 
Deskpro 386 

CIRCLE 342 ON READER SERVICE CARD 


Steven Armbrust is a freelance technical 
writer, and Ted Forgeron is software project 
manager for Intel Scientific Computers. 
Together, they are the authors of the Pro¬ 
grammer’s Reference Manual for IBM Per¬ 
sonal Computers (Dow-Jones Irwin, 1986). 


MARCH 1987 


67 



























































































































BetterBASIC Application Development System $199.00 

The BetterBASIC Application Development System provides very close compatibility with PC-BASICA 
and GW-BASIC, yet provides numerous new and sophisticated language features such as: program 
Block Structures, recursive Procedures and Functions with local variables, structures, Records and 
Pointers and last but not least support of large memory. 


Virtual Memory Manager $99.00 

The Virtual Memory Manager expands Better- 
BASIC’s data space into the giga-byte range and 
finally breaks the 640k byte barrier for array sizes. Not only 
can you directly address all expanded memory supported 
by LIM/EMS memory boards, you can also address any 
RAM Disk, Hard Disk or even a Floppy Disk as if they were 
ordinary RAM. 




i Btrieve™ Interface $99.00 

| This is a high level BetterBASIC interface to the 
ever popular Btrieve™ file manager from Soft- 
Craft. Instead of Assembly language calls this module 
provides high level BetterBASIC program access to all 
Btrieve™ functions. Use it to design your own database 
application in BetterBASIC. 



Virtual Memory Manager- 
Network Version 


$250.00 


| This version of the Virtual Memory Manager allows 
Virtual Memory to be distributed throughout a Local Area 
Network. It also provides File, Records and Field Locking 
to control access to shared data 


i C-Link $99.00 

J This software package allows BetterBASIC to 
I access C-language library functions from within 
BetterBASIC. Currently supported are Lattice and 
Microsoft C. 



■ 8087/80287 Math Module $99.00 

This module allows you to use the 8087 or 80287 
co-processor to significantly accelerate programs 
which are floating point calculation intensive. 



Decimal Math Module $99.00 

If you are a business programmer, you are 
probably frustrated by the many roundoff 
problems caused by ordinary IEEE format floating point 
numerical operations. The BetterBASIC Decimal Math 
Module which offers variable precision from 6 to 24 digits, 
drastically reduces roundoff problems in business 
applications. 



1 Screen Design System $199.00 

S This package truly takes the drudgery out of 
I creating display screens and data entry screens. 
An interactive Screen Editor lets you “paint” your display 
screens exactly as you want them to appear in your pro¬ 
gram. The completed screens take the form of disk resident 
images. A run time library module provides many new 
BetterBASIC procedures and functions for interacting with 
the display screens to simplify the use of pop-up menus 
and data entry screens. 



BetterTools™ $99.00 

| This is a collection of more than 150 useful 
extensions to BetterBASIC such as time and date 
computations, encryption and decryption, low level file 
directory access, hyperbolic function and much more. No 
BetterBASIC programmer should be without BetterTools™. 



CIRCLE NO. 195 ON READER SERVICE CARD 







BetterBASIC is GW-BASIC and PC-BASICA compatible; runs on IBM PC and compatibles. 

HARDWARE REQUIREMENTS ADDITIONAL BetterBASIC STATEMENTS 

CPU: IBM PC, IBM PC XT AT, COMPAQ, IBM PC Compatibles ANY ARC END, MAKE 

Memory: 256KB min up to 640KB APPEND PROCEDURE PROGRAM 

Display: Monochrome or Color ASH ENDPROC MAX 

Disk Drive: One 5V4" floppy, single or double sided ASSIGN ERRORMODE MAXS 

Operating Systems: MS-DOS 2.0,2.1,3.0,3.1 AUTODEF EXIT MEM 

EXIT GOSUB MIN 

EXIT X LEVELS MINS 

EXTERNAL MODULES- 

FRAME OFFSET 

FRAME ON INTERRUPT 

WINDOW PRECISION- 

FREEDISK PRINT TO 

GOTO END PRINT TO 

HEADER USING 

INPUT FROM PROCEDURE 

INS$ PROCS- 

INTEGER PUBLIC 

INTEGER ARC READ RECORD 
INTEGER READCHR 

ARRAY READCHR 

INTEGER FROM 

ARRAY ARC READLINE 

INTEGER READLINE 

ARRAY PTR FROM 

IN ARRAYSTRUC READ RECORD 

INTEGER REAL 

FUNCTION REAL ARC 

INTEGER PTR REAL ARRAY 

INTERRUPT REALARRAY 

INTERRUPT ARG 

CLEAR REAL ARRAY 

INTERRUPT STRUC 

ON/OFF REAL 

INTERRUPT FUNCTION 

PROC REAL PTR 

INTERRUPT RENAME 

RESTORE REPEAT 

IN savf UPT Restart 

" RESTORE PAR 

* RESTORE 

KEY= SCREEN 

KEYWORD ARG RESULT= 

KEYWORD SET RETRY 

LIST ALL ROT 

MAIN SAVE MODULE 


SAVE PAR 
SAVE SCREEN 
SCOPE= 
SCRATCH 
SEG 

SELECT 

SET 

SET CURSOR 
SH 

SHELL 
SIZE 
SIZE$ = 

SPAN 

STACK= 

STATUS^ 

STATUSLINE 

STRING 

STRING ARG 

STRING ARRAY 

STRING ARRAY 
ARG 

STRING ARRAY 
PTR 

STRING ARRAY 
STRUC 

STRING 

FUNCTION 

STRING PTR 

STRUCTURE 

SYSCALL 

SYSCODE 

SYSFLAGS 

TYPE 

UPPERS 

WHILE. . .DO 

WINDOW 

WOR 

WRITE RECORD 
WRITE TO 
XMEM 
XMEM= 

XREF 


DATA TYPES: 

Numeric Data: 

BYTE, range: 0 to +255 
INTEGER, range: - 32768 to + 32767 
REAL, range: Single Precision 8.43xl0' 37 to 3.37xl0 38 
Double precision 4.19xl0 307 to 1.67xl0 308 
Binary Math, Single/Double/Mixed Precision 
Mixed mode numeric expressions will always be REAL. 
String data: 

Variable from 0 to 32767 characters in size. 

Record Variables: 

Allows grouping of dissimilar data types into a single logi¬ 
cal variable. Elements of a RECORD are addressed 
as FIELDS and can be of any type, including ARRAY, 
RECORD and POINTER. 

Array Variables: 

N-dimensional arrays of any type, including ARRAY, 
RECORD and POINTER. Dynamic arrays like PC-BASICA 
Pointer Variables: 

Allows indirect reference to any data type. Can be used 
with RECORD variable to create linked lists, or to create 
relational data structures. 

In addition supports PC-BASICA record types. 

BetterBASIC BENCHMARK COMPARISON 

in milliseconds 

Better BASIC IBM 

INTERPRETIVE COMPILED 


REAL FOR/NEXT 


ASSIGNMENT 


Multiply 


Microsoft Statements Not Supported 

DEF USR MOTOR PEN STRIG 

MERGE ON PEN STICK USR 

ON STRIG 

Call our Toll Free Order Line 


DIVISION 


logarithm 


Exponential 


COSINE 


TANgent 


SQR (SQUARE ROOT) 


Summit Software Technology, Inc. ™ 
106 Access Road 
Norwood, MA 02062 


SP = Single Precision 
DP = Double Precision 


(617) 769-7966 


BetterBASIC is also available from TANDY/RADIO SHACK Computer Centers. Ask your dealer for 
Express Order Software #90-0315 for BetterBASIC, and #90-0303 for Runtime System. 

BetterBASIC is a registered trademark of Summit Software Technology, Inc. IBM PC, XT, AT, are registered trademarks of International Business Machines Corp. Tindy is a registered 
trademark of T^ndy Corp. Lotus™ and 1-2-3™ are registered trademarks of the Lotus Development Corp. Intel © Intel Corp. HALO © Media Cybernetics, Inc. CSS © Graphic Software 
Systems, Inc. Lattice C is a registered trademark of Lattice, Inc. Btrieve is a registered trademark of SoftCraft Inc. 






wmm 


■mmm. 


; V < V;;v 














































As the state of the art 
progresses, so must our 
testing procedures. PC Tech 
Journal's compatibility 
and performance metrics 
have been expanded to 
include other processors. 


TED FORGERON, PAUL PIERCE, and STEVEN ARMBRUST 


F or several months, PC Tech Jour¬ 
nal has been reviewing 80286- 
based computers, examining 
whether or not they are compatible 
with the IBM PC/AT and how they per¬ 
form compared to the 8-MHz AT, as 
well as the characteristics that make 
these computers unique. An integral 
part of these reviews has been a group 
of programs referred to as the AT Eval¬ 
uation Suite. These programs were in¬ 
troduced in the article “Out from the 
Shadow of IBM..., (Steven Armbrust, 
Ted Forgeron, and Paul Pierce, August 
1986, p. 52), which described the tests 
and listed their source code. 

Now that Compaq has introduced 
an AT compatible based on Intel’s new 


high-performance 80386, the tests had 
to be revised in order to measure the 
performance of 386-based machines. 


REVISED TESTS 

The compatibility tests consist of five 
separate programs. ATBIOS examines 
the computer’s BIOS. ATKEY tests 
keyboard compatibility and program¬ 
mability. ATPERF measures processor 
and memory performance. ATELOAT 
measures the performance of floating¬ 
point operations. ATDISK measures 
hard-disk performance. 

Because these programs were ori¬ 
ginally designed to test AT-compatible 
computers, they assumed that each 
computer contained an 80286 micro- 


PHOTOGRAPH • MARC DAVID COHEN 














UPDATE 

processor. In particular, ATPERF calcu¬ 
lated many of its results by assuming 
the number of clock cycles required for 
particular instructions. Because this 
number can vary from processor to 
processor, ATPERF gave valid results 
only when the computer on which it 
ran contained an 80286. Revised listings 
for ATPERF are included in this article. 
Small changes also have been made to 
the other programs to correct minor 
problems, but only the affected sections 
of code are given here. Complete list¬ 
ings for all the programs are available 
on PCTECHline. 

ATBIOS. ATBIOS has been updated to 
version 1.01 by correcting the problems 
that were previously reported in the 
Letters column (“The Shadow of a 
Doubt,” December 1986, p. 16). Three 
changes have been made. 

First, when control characters ap¬ 
peared in the range of memory that 
ATBIOS checked for copyright mes¬ 
sages, the program sometimes printed 
random characters to the screen instead 
of the copyright statement. Version 1.01 
filters out control characters by display¬ 
ing them as periods, much as DEBUG 
handles nonprinting characters. The fix 
involves removing the following lines: 

write (’Copyright Statement is *); 

window (40,6,80,7); 

gotoxy (1,1); 

write (copyright); 

window (1,1,80,25); 

gotoxy (1,8); 

and replacing them with these lines: 

write (’Copyright Statement is ’); 
write (’ ’); 

FOR i: = 1 TO 80 DO 
BEGIN 

IF (copyright [i2H < * ’) 

OR (copyright2Gi2H > ’"’) THEN 
write (’.’) 

ELSE 

write (copyrightji]); 

IF i = 40 THEN 
BEGIN 
writeln; 

write (’ *); 

write (’ ’); 

END; 

END; 

writeln; 

The second problem involved 
ATBIOS’s inability to recognize the IBM 
game adapter, which the AT does not 
support. Because the AT never sets the 
game adapter bit in the equipment flag, 
ATBIOS was fooled into thinking the 
game adapter was not present, even 
when it was installed. The new version 
now checks that bit only for non-AT ma¬ 


chines. The change involves removing 
the following lines: 

write (’Game Adapter Present’); 
write (* ’); 

if (equip_flag and game_mask) <> 0 
then writeln (YES’) 
else writeln (’NO’); 

and replacing them with these: 

IF machine_id <> at_id THEN. 

BEGIN 

write (’Game Adapter Present’) ; 

write (’ ’); 

IF (equipJflag AND game_mask) 

< > 0 THEN writeln (TES’) 

ELSE 

writeln (’NO’); 

END; 

Finally, ATBIOS was changed to 
support I/O redirection so that a user 
can redirect the output to a file or 
printer. This change involves adding the 
following line: 

{$P512} 

anywhere before the first line of source 
code in ATBIOS.PAS. 

ATKEY. ATKEY has not changed since it 
was introduced. This test works only 
with AT-compatible keyboards, not PC 
or XT keyboards. This is now the only 
one of the compatibility and perfor¬ 
mance tests that is specific to the AT. 
ATPERF. Instead of a separate program 
that works only on 80386 machines, the 
new version of ATPERF is designed to 
run on a number of Intel processors. In 
fact, it can run on the 8088, 8086, 

80286, and 80386, and it displays the 
type of processor contained in the com¬ 
puter. Changes also have been made to 
support zero-wait-state memory, such as 
that contained in IBM’s XT-286. Like the 
original program, the new version is 
written in Microsoft C (ATPERF.C) with 
a MASM assembly language subroutine 
(TIMEASM). Listings 1 and 2 contain 
the new source code for these routines. 

In order to support several proces¬ 
sors, ATPERF had to be modified so that 
it could detect the specific type of pro¬ 
cessor that is contained in the comput¬ 
er. The procedure called __CPU_TYPE 
that is in the TIMEASM program per¬ 
forms part of this operation. The tech¬ 
nique that is used in _CPU__TYPE is an 
Intel-approved method that is listed in 
the Technical Reference Guide for Com¬ 
paq’s Deskpro 386. 

Compaq’s procedure tests for the 
8086/88, 80286, and 80386. It relies on 
the behavior of the FLAGS register in 
real mode, which differs among the 
processor types. The most significant bit 
of the FLAGS register (bit 15) distin¬ 


guishes the 8086/88 from the other two 
types. In the 8086/88, bit 15 is always 
set to 1, whereas in the 80286 and 
80386, its value is 0. Bits 12 through 14 
are used to distinguish the 80286 from 
the 80386. In the 80286, these bits are 
always 0; however, the 80386 allows 
these bits to be set. 

Armed with information about the 
Intel processor family, ATPERF invokes 
a procedure that is geared specifically 
toward that particular processor. Each 
of these procedures uses information 
about that processor (such as the num¬ 
ber of processor cycles required to exe¬ 
cute a particular instruction) when cal¬ 
culating the results of its tests. The pro¬ 
cedure measure88 tests the perfor¬ 
mance of computers that contain either 
the 8086 or 8088. The procedures 
measure286 and measure386 are called 
when the computer contains the 80286 
or 80386, respectively. 

When measure88 runs, the results 
are used to distinguish between the 8- 
and 16-bit members of the family (be¬ 
tween the 8088 and 8086). It does this 
by comparing the speed of two instruc¬ 
tions: clear carry flag (CLC) and decimal 
adjust register AL after addition (DAA). 
CLC is a very fast, single-byte instruc¬ 
tion, the speed of which is limited by 
the instruction fetch time. On an 8-bit 
computer, the execution speed of CLC 
is equal to the instruction fetch time. 
However, on 16-bit computers, CLC ex¬ 
ecutes faster because instructions are 
fetched two at a time. DAA is a single¬ 
byte instruction that takes four CPU 
clock cycles to execute, about the same 
as an instruction fetch. Therefore, even 
though 16-bit computers can fetch two 
instructions at once, only one can be 
executed in that time. If the measure¬ 
ments for CLC and DAA are approxi¬ 
mately equal, then the computer is of 
the 8-bit variety. If the CLC instruction 
takes less time, then the test is running 
on a 16-bit computer. 

The measure88 procedure per¬ 
forms a subset of the measurements 
performed by the 80286 and 80386 ver¬ 
sions. It measures only the processor 
and numeric coprocessor speeds and 
the time for an instruction fetch (both 
byte and word). It performs these tests 
in the same way that the original ver¬ 
sion did. Processor speed is measured 
by executing a series of MUL instruc¬ 
tions, each of which takes much longer 
than the number of cycles needed to fill 
the prefetch queue. Byte and word in¬ 
struction fetches are measured by exe¬ 
cuting a series of CLC (byte) and MOV 
(word) instructions. These instructions 
take less time to execute than to fetch, 


72 


PC TECH JOURNAL 



so this part of the test measures just the 
instruction fetching. 

Measurements for memory read 
and write operations are not included 
in the mea$ure88 procedure. These op¬ 
erations cannot be measured accurately 
in the 8086 and 8088 processors be¬ 
cause none of the memory reference 
instructions executes in less time than 
an instruction fetch. 

The measure286 and measure386 
procedures perform almost identical 
operations. The measurements they take 
are the same ones taken by the original 
ATPERF, with the addition of byte in¬ 
struction fetches in both procedures 
and the 32-bit memory accesses that are 
included in measure386. The two pro¬ 
cedures differ only in the assumptions 
each makes about the number of clock 
cycles that are required to execute cer¬ 
tain instructions. 

The mechanism that measure286 
and measure386 use for measuring 
read and write times is slightly different 
than the method used in the earlier ver¬ 
sion of ATPERF. Previously, STO instruc¬ 
tions were used to measure memory 
writes, and that value was then sub¬ 
tracted from a MOVS measurement 
(which includes both reading arid writ¬ 
ing) to obtain the value for memory 
read. The new version measures mem¬ 
ory write with PUSHA instructions, 
which are much faster and can be used 
to test zero-wait-state memory. This 
change was made to handle the faster 
memory used in many of the new com¬ 
puters. STO instructions were limited to 
measuring one-wait-state memory or 
slower. With zero-wait-state memory, 
the STO instructions actually execute 


more slowly than their corresponding 
memory access, thereby invalidating the 
measurement that is obtained. 

The Microsoft C compiler and 
Macro Assembler are used to produce 
the object code of the ATPERF program. 
Given that ATPERF.C contains the C 
source code and TIMEASM contains the 
assembly language source code, the fol¬ 
lowing commands are used to compile 
and link the program: 

msc atperfc,; 

masm time.asm/r„; 

link atperf+time/map/stack:4000,„; 

The /r option on the masm com¬ 
mand directs the assembler to generate 
floating-point instructions that can be 
executed on the numeric coprocessor. 
The /stack:4000 option of the link com¬ 
mand directs the linker to assign a stack 
of 4,000 bytes to the program. This op¬ 
tion, along with the large stack it gener¬ 
ates, is essential for running the new 
version of ATPERF. Because a series of 
PUSHA instructions is used to. measure 
memory write operations, a large stack 
is necessary to contain the pushed 
values. The other option on the link 
command, /map, is not necessary for 
proper program execution; however, it 
does provide a link map that is quite 
helpful for debugging. 

ATFLOAT. The ATFLOAT test has been 
updated to version 1.02 by correcting 
two lines of the program, both of which 
deal with displaying random characters 
to the screen. In the previous version of 
ATFLOAT, the time function, which 
always requires a pointer to a return 
value, used an uninitialized value for its 
return pointer. This sometimes caused 


random characters to appear. Version 
1.02 replaces the line: 

start = time(); 

with the line: 

start = time(NULL); 

and also replaces the line: 

total =' time() - start; 

with: 

total = time(NULL) - start; 

ATDISK. ATDISK seemed to work fine 
when it was compiled under Microsoft 
C version 3.0. However, version 4.0 of 
the C compiler reported compile er¬ 
rors, because the program used struc¬ 
tures when it should have used unions. 
The latest version of ATDISK (1.01) cor¬ 
rects the problem by replacing six in¬ 
stances of the line: 

struct REGS regs; 
with the line: 
union REGS regs; 

The updated compatibility and per¬ 
formance tests have performed their 
first job on the Compaq Deskpro 386, 
reviewed in this issue on p. 48. Because 
of the changes made to ATPERF, the 
program was able to identify the pro¬ 
cessor in the Deskpro and perform tests 
suitable for the 386. 1 "ilmTim ^1 


Ted Forgeron, software project manager for 
Intel Scientific Computers, and Steven Arm- 
brust, a technical writer, have reviewed sever¬ 
al AT compatibles for PC Tech Journal. With 
Paul Pierce, a software consultant, they de¬ 
vised the original AT Evaluation Suite. 


LISTING 1: ATPERF.C 


/* ATPERF -- PC Tech Journal AT Hardware Performance Test 

* Version 2.00 Originally written 05/17/86 

* Last modified 12/18/86 

* Changes: 1. First release (1.00). 

* 2. Correct to work with zero-wait state memory (1.01). 

* 3. Detects an unsupported processor (1.01). 

* 4. Change to support 8088, 8086, 80188, 80186'and 80386 (2.00). 
■ *- Copyright (c) 1986, 1987, Ziff Communications Company 

* Program by: Ted Forgeron, Paul Pierce 

* Measures clock rates and memory speeds 

* of PC and AT compatible computers. */ 




■ V- ■: p ' - 




:-C 

1 

unsigned multimeO* * ' Jf 
unsigned be let tmeOjr •* - 



#define IRB 

o 

/* Instruction fetch, byte 

x\,-> *f ' 



extern 

idTOdd- 


#define IRW 

i 

/* Instruction fetch, word 

*/;... 



extern 

unsigned wmovtimeC); 



#define IRX 

2 

/* Instruction fetch, slow byte */ 



extern 

unsigned dmovtimeO; 



#define MRB 

3 

/* RAM read byte 

*/ 



extern 

unsigned bdaatimeO;. 



^define MUB 

4 

/* RAM write byte 

*/ 



extern 

unsigned bmvstimeO; 



^define RRB 


/♦ ROM read byte 

*/ 



extern 

unsigned wmvstimeO? T*. * 

| d : v 

i,:, f ' 

#define ERB 


/* EMM read byte. 

♦/ 



extern 

unsigned dpiystimeO; i 



#define EWB 

7 ^ 

/* EMM write byte 

■ m*/ - ; 



extern 

unsigned bromtimeO; 

#define VWB 

8 

/* Video write byte 

*/ 



extern 

unsigned wromtimeO; 



^define MRW 

9 

/* RAM read word 

*/ 



extern 

unsigned dromtimeO; 



#define MWW 

10 

/* RAM write word 

*/ 



extern 

unsigned wpshtimeO; 



#define RRW 

11 

/* ROM read word 

♦/ 



: extern 

unsigned dpshtimeO; 



#define ERU 

12 

/* EMM read word 

*/ 



extern 

unsigned bemmtimeO; 



#define EWW 

13 

/* WMM write word 




extern 

unsigned wemp|ime(); P : 




^define VWW^ 14 
#deffne 

#defihe MRD ' 16 

#define MUD 17 
#define RRD 18 
^define ERD 19 
#define EW* |!|20 | 

^define WD. . 21 
#define VARS88 3 

#define VARS286 15 
#define VARS386 22 
/* Measurement procedures */ 


/♦Video write "word 




/♦ Instruction fetch, dword s */ > _ I 


/♦ RAM read dword 
/* RAM write dword 
/* ROM read dword 
/* EMM read dword 
/.* EMM ?wr.i te dword 
/* Video write dword 


*T 

*/ 

*/ 

; */' ? 
’ */• 


37 


sa:m 


MARCH 1987 


73 



Wfe’ve taken the work 
out of doing Windows. 


Microsoft® Windows is becoming the most 
popular operating environment for PC systems. 

Its not surprising. Windows provides the 
foundation for an exciting new generation of 
applications that users are demanding. In addi¬ 
tion, Windows handles many of the details 
involved in a software project allowing you to 
spend more time enhancing your application. 
That’s why a growing number of corporate and 
independent software developers are building 
Windows applications. 

The Microsoft Windows Software Develop¬ 
ment Kit is your key to this extraordinary new 
environment. It’s packed with full reference 
documentation, libraries, utilities and sample 
programs. Together with our C Compiler or 
Macro Assembler, it’s a comprehensive package 
that lets you make the most of your application. 

Software with a new view. 

- Giving your applications the Windows 
treatment begins with a new look. The rich 
graphical environment allows you to rethink how 
you want your program to be presented on screen. 
It lets you mix text and graphics. You can incor¬ 
porate multiple fonts in a variety of sizes, faces and 
styles. And it provides the basic building blocks 
that make it easy to create drop-down menus, 
dialog boxes, scroll bars, icons and more. 

These features not only simplify your applica¬ 
tion design, but also provide the familiar interface 
that makes your software easier to learn and use. 

Easing the data shuffle. 

Of course, there’s more to Windows than 
just looks. Now, different applications can work 
together. In concert. 

The Windows Clipboard provides support 
for users to cut and paste information between 
your applications and others. Or you can use 
messages to establish “hot links” to transfer 
data automatically. 


Upgrading made easy. 

Windows’device independent design allows 
you to build your application today and take 
advantage of new technology as it becomes avail¬ 
able. When new graphics cards, printers and 
pointing devices appear they can be used with 
your software, without modifying your code. 
Simply by installing the new driver. 

Your window of opportunity. 

The Microsoft Windows Software Develop¬ 
ment Kit is your fastest route to better applica¬ 
tions. And with it, we also offer DIAL, our on-line 
technical support service to help you with the 
tough questions, and development courses that 
cover everything from using the dialog editor 
to memory management. 

Find out how you can get your Microsoft 
Windows Software Development Kit. Pick up the 
phone and call (800) 426-9400. In Washington 
State and Alaska, call (206) 882-8088. In Canada, 
call (416) 673-7638. And we’ll open the door 
to Windows. 


The Microsoft Windows 
Software Development Kit includes: 
♦Dialog editor. 

♦Icon editor. 

♦Font editor. 

♦Resource compiler. 

♦ Linker. 

♦MAKE (program maintenance utility). 

♦ Symbolic debugger. 

♦ Heap analysis utility. 

♦Sample programs. 

♦Windows libraries. 

♦ Programmers reference. 
♦Programmers utility guide. 

System requirements: 

♦ 512K memory, DOS 2.0 or higher. 
♦Two double sided disk drives* 

♦ Graphics adapter card. 

*hard disk recommended 


MicrosoffWindows Software Development Kit 

The High Performance Software. 

Microsoft is a registered trademark of Microsoft Corporation. 




UPDATE 



extern unsigned demptimeO; 


measure286(); 


extern unsigned wenmtimeO; 


break; 


extern unsigned demmtimeO; 


case 3: 


extern unsigned bvidtimeO; 


accessclks = 2; 


extern unsigned wvidtimeO; 


measure386(); 


extern unsigned dvidtimeO; 


break; 


extern unsigned fptimeO; 


default: 


/* Timer rate in MHz */ 


printf("\nThis version of ATPERF is for "); 


#define TIMER2_RATE 1.193180 


print f("8088/86/188/186/286/386"); 


/* Number of processor clocks in a multiply instruction */ 


printf("-based machines only.\n"); 


#define MULCLKS88 118 


exit(1); 


#define MULCLKS286 21 


> 


^define MULCLKS386 25 


/* Release EMM memory page. */ 


/* Overhead in the multiply test V 


if (emmok) 


#define MUL0VH88 ( 31 + 22*count/100 ) 


finish_emm(); 


#define MULOVH286 ( 15 + 14*count/100 ) 


/* Display the basic measurement results and performance index 


#define MUL0VH386 ( 15 + 14*count/100 ) 


* relative to a 8 MHz AT. */ 


/* Overhead in the mov instruction test */ 


printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); 


#define M0V0VH88 ( elktime * (31 + 22*count/100) ) 


printf("ATPERF -• PC Tech Journal AT Hardware "); 


#define MOVOVH286 ( elktime * (15 + 14*count/100) ) 


printfC'Performance Test\n"); 


^define M0V0VH386 ( elktime * (15 + 14*count/100) ) 


printf("Version 2.00, Copyright (c) 1986, 1987, Ziff "); 


/* Overhead in pusha instruction test */ 


printf("Communications Co.\n"); 


#define WPOVH ( elktime * (15 + 9*count/200) ) 


printf("Written by Ted Forgeron and Paul Pierce\n"); 


#define DPOVH ( elktime * (15 + 9*count/200) ) 


printf("IBM PC/AT model 339 (8 MHz) = 1.00 for relative "); 


/* Nunber of numeric processor clocks in a FP divide */ 


pr int f("measurements.\n"); 


#define FPCLKS88 197 


if (epu < 2) 


tfdefine FPCLKS286 203 


printf("\n"); 


#define FPCLKS386 200 


printf(" "); 


/* Processor overhead in the FP divide test */ 


printf(" Byte Word "); 


^define FP0VH88 ( elktime * 2 * FPCOUNT ) 


if (epu > 2) 


#define FPOVH286 ( elktime * 9 * FPCOUNT ) 


printfC'Dword "); 


#define FP0VH386 ( elktime * 9 * FPCOUNT ) 


printf("Relative\n"); 


/* Count for most tests */ 


printf("Average instruction fetch:"); 


#define COUNT 1000 


printf("%#10.2g uS", acctime[IRB]); 


/* Count for the f. p. divide test */ 


printf("%#10.2g uS", acctimetIRW]); 


#define FPCOUNT 100 


if (epu > 2) 


/* Number of trials for each test */ 


printf("%#10.2g uS", acctime[IRD]); 


#define TRIALS 100 


print f("%#10.2g\n", 0.403/acctime[IRW)); 


/* Variables which hold constants selected by epu type */ 


if (epu < 2) < 


int access_clks; 


printf("\n"); 


int epu; /* CPU type: 0=86/88,1=80186,2=80286,3=80386 *./ 


) else C 


double elkrate; /* Processor clock rate, MHz */ 


printf("Average RAM read time: "); 


double elktime; /* Processor clock period, usee */ 


printf(»%#10.2g uS", acctime[MRB]); 


double fprate; /* FP processor clock rate, MHz */ 


printf("%#10.2g uS", acctimeCMRW]); 


double fpacc; /* FP processor clock period accumulator */ 


if (epu > 2) 


int emmok; /* Set if extended memory is present */ 


printf("%#10.2g uS", acctime[MRD]); 


int ndpok; /* Set if math coprocessor is present */ 


printf("%#10.2g\n", 0.401/acctime[MRW]); 


int six; /* Set if epu is 8086 or 80186 */ 


printf("Average RAM write time: "); 


double raw; /* Variable for raw data */ 


printf("%#10.2g uS", acctimetMWB]); 


double acctime[VARS386]; /* Accumulators for speeds */ 


printf("%#10.2g uS", acctimeCMWW]); 


int count; /* Number of ops per trial */ 


if (epu > 2) 


int trials; /* Number of repetitions */ 


printf("%#10.2g uS", acctimetMWD]); 


/* Main program. */ 


printf("%#10.2g\n", 0.401/acctime[MWW]); 


main(argc, argv) 


if (emmok) { 


int arge; 


printfC'Average EMM read time: "); 


char **argv; 


printf("%#10.2g uS", acctimetERB]); 




printf("%#10.2g uS", acctimelERW]); 


register int i; 


if (epu > 2) 


count = COUNT; 


printf("%#10.2g uS", acctime[ERD]); 


trials = TRIALS; 


printf("%#10.2g\n", 0.402/acctime[ERW]); 


/* Determine whether there a math coprocessor in the system. */ 


printfC'Average EMM write time: "); 


ndpok = ndp_present(); 


printf("%#10.2g uS", acctimetEWB]); 


/* Determine whether there is extended memory in the system and 


printf("%#10.2g uS", acctimeCEWW]); 


* allocate a piece of it for testing. */ 


if (epu > 2) 


emmok = (setup_emm() == 0); 


printf("%#10.2g uS", acctime[EWD]); 


/* Detect the type of video card and save the information for the 


printf("%#10.2g\n", 0.402/acctime[EWW]); 


* video measurements. */ 


> 


setup_video(); 


printfC'Average ROM read time: "); 


/* Find out the CPU type and set parameters accordingly. */ 


printf("%#10.2g uS", acctimeCRRB]); 


epu = cpu_type(); 


printf("%#10.2g uS", acctimetRRW]); 


six = 0; 


if (epu > 2) 


switch (epu) { 


printf("%#10.2g uS", acctimetRRD]); 


case 0: 


printf("%#10.2g\n", 0.401/acctime[RRW]); 


case 1: 


printfC'Average Video write time: "); 


access_clks = 4; 


printf("%#10.2g uS", acctimeCVWB]); 


measure88(); 


printf("%#10.2g uS", acctime[VWW]); 


break; 


if (epu > 2) 


case 2: 


printf("%#10.2g uS", acctime[VWD]); 


access_clks = 2; 


printf("%#10.2g\n", 2.415/acctimeCVWW]); 


MARCH 1987 


75 





UPDATE 



switch (cpu) < 


printfC 8086"), 


printfC 8088"); 


break; 


printfC 80186") 


printfC 80188"), 


break; 


printf("80286") 
break; 


case 3: 


printf("80386"), 
break; 


printfC CPU clock rate: "); 

printf1g MHz", clkrate); 
printfC Relative: m.2g\n", clkrate/8.0); 
if (ndpok) i 

printf("Math Coprocessor clock rate: "); 

printf(«%#4.1g MHz", fprate); 

printfC Relative: %#4.2g\n", fprate/5.33) 


/* Calculate refresh overhead from instruction fetch time by assuming 

* that each fetch takes an exact multiple of the clock period. The 

* difference between average time and the time for an individual * 

* fetch is due to memory refresh cycles. */ 

raw = acctimellRW] / elktime; 

printf("Refresh overhead: %#2.1g%%\n", 

( (raw - (int)raw) / (int)raw ) * 100); 

/♦ Print information about memory based on the speed measurements. */ 
printf("\nMemory "); 

printfC Access width Wait states\n"); 

if (cpu < 2) C 
if (six) 

analyzeCFetch ", acctimellRW], 

acctimellRW], 2.0*acctime(IRW]); 

else 

analyzeCFetch ", acctimetlRB], 

acctimellRW], 2.0*acctime[IRU]); 

> else C 

analyzeCRAM read ", 

, acctimelMRBl, acctimeCMRW], acctimetMRD]); 
analyze("RAM write", 

acctimelMWB], acctimelMWWl, acctimetMWD]); 
if (emmok) ( 

analyzeCEMM read", 

acctimetERB], acctimelERW], acctimelERD]); 
analyzeCEMM write", 

acctimelEWB); acctimeCEWW], acctimeCEWD]); 


analyzeCROM read", 

acctimelRRB], acctimelRRW], acctimelRRD]) 
analyzeCVideo write", 

acctfmelVUB], acctimetVWW]acctimetVWD]) 


measure88() 


register int i; 

/* Measure the clock rate by executing multiply instructions. Each 

* multiply takes a fixed number of clock cycles. */ 

elktime = 0; 

for (i = 0; i < trials; i++) { 

/* Obtain the number of clock ticks for "count" multiplies. ♦/ 
raw = multime(count); 

/* Accunulate the clock time in microseconds by adjusting for the 

* timer rate, number of clocks per multiply, instruction count, and 

* test overhead. */ 

elktime += raw / (TIMER2_RATE * 

((double)MULCLKS88*count + MULOVH88)); 


/* Calculate the average clock period by dividing by the number of 



/♦ Calculate averages for all measurements. */ 

for (i a 0; i < VARS88; i++) , 

acctimeli] /= trials; 

/* Calculate numeric processor clock rate using floating point divide 

* instructions, using the same technique as was used to measure 

* the processor clock rate*.*/ • 

if (ndpok) < 

fprate » 0; ■ 

for (i = 0; i < trials; i++) ( 
raw = fptime(FPCOUNT); 
fpacc += (raw / TIMER2_RATE - FPOVH88) / 
FPCLKS88 / FPCOUNT,* 


fpacc /« trials; 
fprate = 1.0/fpaccj 


/* Set 86 flag if 2 clock byte instructions execute faster than 4 
* clock instructions Ate to being fetched two to a word. */ 
six « acetime tIRB] < 0.9*acctime(IRX1; , * 


measure286() 


register int i; 

/♦ Measure the clock rate by executing multiply instructions. Each 

* multiply takes a fixed runber of clock cycles. */ 

elktime « 0; • 

for (i = 0; i < trials; i++) ( 

/* Obtain the number of clock ticks for "count" multiplies. */ 
raw = multime(count); 

/♦ Accumulate the clock time in microseconds by adjusting for the 

* timer rate, number of clocks per multiply, instruction count, and 

* test overhead. */ 

elktime += raw / (TIMER2_RATE * 

((double)MULCLKS286*count + MULOVH286)); 


/* Calculate the average clock period by dividing by the-number of 

* trials. The clock rate is the inverse of the clock period. */ 

elktime /= trials; 
elkrate = 1.0/clktime; 

/* Clear all of the memory speed accumulators. */ 
for (i = 0; i < VARS286; i++) 
acctimeti] » 0; 

/♦ Do the memory speed tests. */ 

i for (i = 0; i < trials; i++) € 

/* Obtain the number of timer ticks for "count" clc instructions, 

* which are limited by memory fetch time. */ 

raw = bclctime(count); 

/* Accumulate the number of microseconds per instruction fetch by 

* adjusting for timer rate, test overhead, and instruction count. 

8cctime(IR8] +« 

(raw / TIMER2_RATE - MOVOVH286) / count; 

/* Make a similar measurement for the two byte "mov" instruction. * 
raw = wmovtime(count); 
acctimellRW] += 


76 


PC TECH JOURNAL 







(raw / TIMER2JATE - K0V0VH286) / count; 

/♦ Measure byte read+write time measuring movs instructions. ♦/ 
raw » bmvstime(count); 
acctimeCMRB] += raw/(TIMER2_RATE*count); 

/* Calculate ROM read time by measuring movs from ROM to RAM. */ 
raw = bromtime(count); 
acctimeCRRB] += raw/(TIMER2_RATE*count); 

/* Measure word write using the pusha instruction. ♦/ 
raw » wpshtime(count) * WPOVH; 
acctimeCMWW] += raw/(TIMER2_RATE*count); 

/* Measure movs (read+write) time. */ 
raw = wmvstime(count); 
acctimeCMRW] ./■+« raw/(TIMER2_RATE*count); 
raw » wromtime(count); 
acctimeCRRW] +« raw/ (TI MER2_RATE*count); 

/* If EMM is present, do measurements on it using same techniques, 
if (emmok) C 

/* Measure byte mov in EMM. */ 

raw » bemmtime(count); 

acctimeCERB] += raw/(TIMER2_RATE*count); 

/* Measure word write, calculate word read. */ 

raw = wemptime(count) * WPOVH; 
acctimeCEUU] += raw/(TIMER2_RATE*count); 
raw = wemmtime(count); 
acctime(ERW) += raw/(TIMER2_RATE*count); 


/* Measure byte and word writes into video RAM. */ 
raw = bvidtime(count); 
acctimeCVWB] += raw/(TIMER2_RATE*count)| 
raw = wvidtime(count); 
acctimeCVWW]*♦» raw/(TIMER2_RATE*count); 


/* Calculate averages for all measurements. */ 
for (i = 0; i < VARS286; i++) 
acctimeCi] /= trials; 

/* Adjust word write times by subtracting instruction fetch time, 
acctimelMWW] -= acctimeCIRW)/16; 
if (emmok) 

acctimeCIRW]/16; 


acctimeCEUU] 

/* Adjust for extra time per instruction when measuring zero wait 

* state memory. */ 

if (acctimeCMWW] < 3.375*clktime) 
acctimeCMWW] -= clktime/8; 

. if (emmok) 

if (acctimeCEUU] < 3.375*clktime) 
acctimeCEUU] -= clktime/8; 

/* Calculate byte write time by assuming the same ratio between read 

* and write as for word access. */ 

acctimeCMWB] =* acctimeCMRB] * acctimeCMWW] / 
acctimeCMRW]; 

if (emmok) 

acctimeCEWB] = acctimeCERB] * acctimeCEWW] / 
acctimeCERU]; 

/* Calculate read times by subtracting write time from 

* mov (read+write) time. */ 

acctimeCMRB] * acctimeCMRB] * acctimeCMWB];. 

acctimeCMRW] « acctimeCMRW] - acctimeCMWW]/ 

acctimetRRB] = acctimetRRB] - acctimeCMWB]; 

acctimeCRRW] = acctimeCRRW] • acctimeCMWW]; 

if (emmok) i 

acctimeCERB) = acctimeCERB] * acctimetEWBJ; 
acctimeCERW) = acctimeCERU] - acctimeCEWW]; 


Calculate numeric processor clock rate using floating point divide 
instructions, using the same technique as was used to measure the 
processor clock rate. */ 

.. if (ndpok) <' ■ . 7 

fprate = 0; 

for (i = 0; i < trials; i++) C 
raw = fptime(FPCOUNT); 
fpacc += (raw / TIMER2_RATE • FP0VH286) / 
FPCLKS286 / FPCOUNT; 


fpacc /= trials; 
fprate « 1.0/fpacej 


Fill in dword variables to provide complete input to analyze 
acctimeCMRD] = 2.0 * acctimeCMRU]; 
acctimeCMWD) * 2.0 * acctimeCMWW]; 


acctimelERD] » 2.0 ♦ acctimeCERU]; 


acctimeCEWO] « 2.0 ♦ acctimeCEWW]; 
acctimeCRR0] =2.0* acctimeCRRW]; 







measure386() 


register int i; 

/♦ Measure the clock rate by executing multiply instructions. Each 

* multiply takes a fixed number of clock cycles. */ 

elktime = 0; 

for (i = 0; i < trials; i++) C 

/♦ Obtain the number of clock ticks for “count 1 ' multiplies. */ 
raw = multime(count); 

/* Accumulate the clock time in microseconds by adjusting for the 

* timer rate, number of clocks per multiply, instruction count, and 

* test overhead. */ 

elktime += raw / (TIMER2_RATE * 

((double)MULCLKS386*coqnt + MULOVH386)); . 


/* Calculate the average clock period by dividing bythe number of 

* trials. The clock rate is the inverse of the Clock period. */ 

elktime /= trials; 
elkrate = 1.0/clktime; 

/♦Clear all of the memory speed accumulators. */ 
for (i = 0; i < VARS386; i++) 
acctimeti] * 0; 

/* Do the memory speed tests. */ 

for (i = 0; i < trials; i++) C 

/* Obtain the number of timer ticks for "count" clc instructions, 

* which are limited by memory fetch time. */ 

raw s beletime(count); 

/* Accumulate the number of microseconds per instruction fetch by 

* adjusting for timer rate, test overhead, and instruction count. */ 

acctimeCIRB] += 

(raw / TIMER2_RATE - MOVOVH386) / count; 

/* Make a similar measurement for the two byte and four byte "mov" 

* instruction. */ 

raw » wmovtime(count); 
acctimellRW] += 

(raw / TIMER2RATE - MOVOVH386) / count; 
raw » dmovtime(count); 
acctimeURB] +« 

(raw / TIMER2_RATE * M0V0VH386) / count; 

7* Measure byte read+write time measuring movs instructions. */ 
raw = bmvstime(count); 
acctimeCMRB] += raw/(TIMER2_RATE*count); 

/* Calculate ROM read time by measuring movs from ROM to RAM. */ 
raw « bromtime(count); 
acctimetRRB] += raw/(TIMER2__RATE*count); 

/* Measure word and dword write using the pusha instruction. */ 
raw = wpshtime(count) - WPOVH; 
acctimeCMWW] += raw/(TIMER2_RATE*count); 
raw = dpshtime(count) • DPOVH; 
acctimetMWD] += raw/(TIMER2_RATE*count); 

/* Measure word and dword movs (read+write) time. */ 
raw = wmvstime(count); 
acctimetMRW] += raw/(TIMER2_RATE*count); 
raw = wromtime(count); 
acctimeCRRW] += raw/(TIMER2_RATE*count); 
raw = dmvstime(count); 
acctimeCMRD] += raw/( TI MER2 -> RATE*count); 
raw * dromtime(coinit); 
acctimeCRRD] += raw/(TIMER2_RATE*count); 

/* If EMM is present, do measurements on it using same techniques. */ 
if (emmok) { 

raw « bemmtime(count); 

acctimeCERB] += raw/(TIMER2_RATE*count); 

raw « wemptime(count) * WPOVH; 

acctimeCEWW] += raw/(TIMER2_RATE*count); 

raw = wemmtime(count); 

acctimeCERW] += raw/(TIMER2_RATE*count); 

raw - demptime(count) -DPOVH; 

acctimeCEW)] +=* raw/(TIMER2_RATE*count); 

raw = demmtime(count); 

acctimelERD] += raw/(TIMER2_RATE*count); 


/* Measure writes into video RAM. */ 
raw ■- bvidtime(count); 


MARCH 1987 



UPDATE 


acctime [VWB] += raw/CTIMER2_RATE*courit); 

raw = wvidtime(count); 

acctimetVWW] += raw/(TIMER2_RATE*count); 

raw = dvidtime(count); 

acctimelVWD] += raw/(TIMER2_RATE*count); 

> . .. 

■/* Calculate averages for all measurements. V 
for (i = 0; 1 < VARS386; i++) 
acctimeti] /= trials; 

/* Adjust word write times by subtracting instruction fetch time. */ 
acctimetMWW] - = acctime[IRW]/16; 
acctimetMWD] -= acctimetIRW]/8; 
if (emmok) i 

acctimetEWW] acctimeClRW]/16; 

acctimeCEWD] - = acctime[IRW]/8; 

> 


/♦Adjust for extra time per instruction when measuring zero wait 
* state memory. */ 

if (acctimetMWW] < 3.375*clktime) 
acctimetMWW] -= elktime; 
if (acctimetMWD] < 3.375*clktime) 
acctimetMWD] -= clktime; 
if (emmok) { 

if (acctimeCEWW] < 3.375*clktime) 
acctimetEWW] -= elktime; 
if (acctimetEWD] < 3.375*clktime) 
acctimeCEWD) -= clktime; 

> 


/* Calculate byte write time by assuming the same ratio between read 

* and write as for word access. */ 

acctimetMWB] = acctimetMRB) * acctimetMWW] / 
acctimeCMRW]; 

if (emmok) 

acctimetEWB] = acctimetERB] * acctime[EWW] / 
acctimetERW]; 

/* Calculate read times by subtracting write time from 

* mov (read+write) time. */ 

acctimetMRB] = acctimetMRB] - acctimeIMWB3; 

acctimetMRW] = acctimetMRW] - acctimetMWW]; 

acctimetMRD] = acctimetMRD] - acctimetMWD]; 

acctimelRRB] = acctimetRRB] - acctimetMWB]; 

acctimetRRW] * acctimetRRWl * acctimetMWW]; 

acctimeCRRD] = acctimeCRRD] -acctimetMWD]; 

if (emmok) ( 

acctimetERB] = acctimetERB] - acctimetEWB]; 

acctimetERW] = acctimetERW] - acctimetEWW]; 

acctimetERD] = acctimetERD] - acctimeCEWD]; 


■ > '../.v,;-.- .. ;v..: 

/* Calculate numeric processor clock rate using floating point divide 

* instructions, using the same technique as was used to measure the 

* processor clock rate. */ 

if (ndpok) ( 

fprate = 0; / 

for (i « 0; ? < trials; i++) ( 
raw = fptime(FPCOUNT); 
fpacc += (raw / TIMER2_RATE - FPOVH386) / 
FPCLKS386 / FPCOUNT; 


> 

fpacc /= trials; 

fprate = 1.0/fpace; 

■ * '■ .. ■ „ : 

> , . : ' ,7 ' • 

/* analyze. This procedure deduces information about the memory based 

* on the measured times. If byte (8 bits) and word (16 bits) times 

* are different then the memory is byte oriented since each word 

* operation takes two byte operations. Otherwise, if the byte and 

* word times are about the same, the memory is word oriented and can 

* access either a word or a byte in a single memory cycle. 

* Similar arguments can be made about 32 bit accesses. 

* Each memory access takes an exact number of processor clock 

* cycles. The first two are required by the processor, but 

* any additional cycles are determined by the memory and are 

* called wait states (because the processor is waiting for 

* the memory.) V 
analyze(name, btime, wtime, dtime) 

char *name; 
double btime; 
double wtime; 
double dtime; 


( 



double 

t; 


/* Print the heading */ 


printf("%-12s", name); 


/* Determine whether the memory is byte oriented, word oriented, dword 

* oriented, or other. (If other, the data are Suspect.) */ 

if (wtime > dtime*0.66 && 


wtime < dtime*!.33) < 



printfC* Dword ") 

t = dtime; 


} else 

if (wtime*2 > dtime*0.66 && 


wtime*2 < dtime*1.33 && 


btime > wtime*0.66 && 
btime < wtime*1.33) C 



printfC Word ") 

t = wtime; 


) else 

if (btime*2 > wtime*0.66 && 


btime*2 < wtime*1.33) i 


printfC Byte “) 

t = btime; 


> else 

( 



printfC* Strange") 



t = btime; 


/* Determine the number of wait states by dividing by the clock 
* period, subtracting two processor clock times, and rounding down 

* to an integer. */ 


t = t / 

clktime - access_clks; 


if (t < 

0.0) 

t = 0.0; 


printf( 

) 

* %6d\n", (unsigned)t); 

LISTING 2: TIMEASM 



NAME TIME 


_TEXT SEGMENT 

PARA PUBLIC 'CODE' 


_TEXT ENDS 



CONST SEGMENT 

PARA PUBLIC 'CONST* 


CONST ENDS 



_BSS SEGMENT 

PARA PUBLIC 'BSS* 


_BSS ENDS 



_DATA SEGMENT 

PARA PUBLIC 'DATA' 


_DATA ENDS 



DGROUP GROUP 

CONST, _BSS, _DATA 


ASSUME 

CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP 

TESTSEG SEGMENT PARA PUBLIC ‘TEST 1 


TESTSEG_START 
TESTSEG ENDS 

DW ' 32767 DUP (?) 


PPI_P0RT 

EQU 061H 


TIMER2_PORT 

EQU 042H 


TIMER_CTRL 

EQU 043H 


JJATA 

SEGMENT 

i|f - 

VIDBASE 

DW 0B800H 

y-yy ' -..yfy " -' >V 

EMMBASE 

DW 90Q0H f 

- - ■ 

PID 

DW ? 

EMM_NAME 

DB "EMMXXXX0" 


_DATA 

ENDS 


_TEXT 

SEGMENT 

. 

; JflJLTIME 

f 

; TIME EXECUTION OF MULTIPLY INSTRUCTIONS ; 

.***************************************************************. 

EVEN 



DB 

?, ? 



PUBLIC _MULTIME 


_MULTIME 

PROC NEAR 


PUSH 

BP 

SAVE FRAME 

MOV 

BP, SP 


PUSH 

DI 

SAVE DI 

CALL 

SETUP_TIMER 

SET UP TIMER 

MOV 

Dl, 08000H 

SET DI 

MOV 

AX, CBP+4] 

GET COUNT ARGUMENT 

►ADD 

AX, 99 

ROUND UP 

MOV 

CX, 100 

DIVIDE BY 100 = 

DIV 

CL 

NUMBER OF INSTRUCTIONS 

MOV 

CL, AL 

PER PASS 

NOP 


ALIGN INSTRUCTIONS 

IN 

AL, PPIMPORT 

GET CURRENT CONTROL 


78 


PC TECH JOURNAL 








SAVE IN BL 

SET TIMER ENABLE B1 


DO 100 MOV DX,05555H 
THE LONG WAY (WITH MOD R/M) 
END MACRO 
COUNT THIS PASS 
JUMP IF COMPLETE 
LOOP BACK IF NOT DONE 
RESTORE CONTROL VALUE 


END MACRO 
COUNT THIS PASS 
JUMP IF COMPLETE 
LOOP BACK IF NOT DONE 
RESTORE CONTROL VALUE 


START INTERRUPTS 
OBTAIN FINAL COUNT 
RESTORE DI 
RESTORE BP 
RETURN 


CALL GET_TIMER 

POP DI 

POP BP 

' RET..'.; 

DMOVTIME ENDP 


STI ; START INTERRUPTS 

CALL GET_TIMER ; OBTAIN FINAL COUNT 

POP DI ; RESTORE DI 

POP BP ; RESTORE BP 

RET ; RETURN 

MULTIME ENDP 


_BCLCTIME 

TIME EXECUTION OF CLC INSTRUCTION (INSTR. READ TIME) 


EVEN 

PUBLIC _BCLCTIME 
BCLCTIME PROC NEAR 

PUSH BP ; SAVE FRAME 

MOV BP, SP 

PUSH DI ; SAVE DI 

CALL SETUPJTMER ; SET UP TIMER 

MOV DI, 0 ; CLEAR DI 

MOV AX, [BP+4] ; GET COUNT ARGUMENT 

ADD AX, 99 ; ROUND UP 

MOV CX, 100 ; DIVIDE BY 100 = 

OIV CL ■ . ; NUMBER OF INSTRUCTIONS 

MOV CL, AL ; PER PASS 

NOP ; ALIGN INSTRUCTIONS 

IN AL, PPI_PORT ; GET CURRENT CONTROL 

MOV BL, AL ; SAVE IN BL 

OR AX, 1 ; SET TIMER ENABLE BIT 

CU ; STOP INTERRUPTS 

OUT PPIJ-ORT, AL ; ENABLE TIMER 

IIL: REPT 100 ; DO 100 CLC'S 


_WMOVTIME 

TIME EXECUTION OF MOV INSTRUCTION (INSTR. READ TIME) 


PUBLIC. JWMOVTIME 
PROC * NEAR 




WMOVTIME 


SAVE DI 
SET UP TIMER 
CLEAR DI 

GET COUNT ARGUMENT 
ROUND UP 
DIVIDE BY 100 = 

NUMBER OF INSTRUCTIONS 
PER PASS 

ALIGN INSTRUCTIONS 
GET CURRENT CONTROL 
SAVE IN BL 

SET TIMER ENABLE "bi't"'^' 
STOP INTERRUPTS 
ENABLE TIMER 
DO 100. MOVES 


CALL SETUP TIMER 


MOV .AX, CBP+43 

ADD AX, 99 

MOV CX, 100 

DIV CL 

MOV CL, AL 


END MACRO 
COUNT THIS PASS 
JUMP IF COMPLETE 
LOOP BACK IF NOT DONE 
RESTORE CONTROL VALUE 


JZ BID 

JMP BIL 


END MACRO 
COUNT THIS PASS' 

JUMP IF COMPLETE 
LOOP BACK IF NOT DONE 
RESTORE CONTROL VALUE 


; START INTERRUPTS 
; OBTAIN FINAL COUNT 
; RESTORE DI 
; RESTORE BP 
; RETURN 


CALL GET TIMER 

.POP DI 

POP BP 

RET 

BCLCTIME ENDP . 


StART INTERRUPTS 


_8DAATIME 

TIME EXECUTION OF DAA INSTRUCTION (INSTR. READ TIME) 


RETURN 


WMOVTIME ENDP 




-Ti 


_DMOVTIME 

TIME EXECUTION OF MOV INSTRUCTION (INSTR. READ TIME) 


PUBLIC _BDAATIME 
BDAATIME PROC NEAR 

PUSH BP 

. ■ . u,: : m: ; .m : ■ t 

MOV BP, SP 

PUSH DI 

CALL SETUP_TIMER 
MOV DI, 0 

MOV AX, CBP+43 

ADD AX, 99 

MOV CX, 100 

DIV CL 

MOV ' CL,' AL " 


SAVE DI 
SET UP TIMER 
CLEAR DI 

GET COUNT ARGUMENT 
ROUND UP : 

DIVIDE BY 100 ~ 

NUMBER OF INSTRUCTION 
PER PASS 

ALIGN INSTRUCTIONS 
GET CURRENT CONTROL 
SAVE IN BL 

SET TIMER ENABLE BIT 
STOP INTERRUPTS 
ENABLE TIMER 
DO 100 DAA'S 


PUSH DI 

CALL SETUP^TIMER 

MOV DI, 0 

MOV AX, [BP+4] 

ADD AX, 99 

MOV CX, 100 

DIV CL 

MOV CL, AL 

NOP 

IN AL, PPI PORT 


SAVE DI 
SET UP TIMER 
CLEAR DI 

GET COUNT ARGUMENT 
ROUND UP 
DIVIDE BY100 = 

NUMBER OF INSTRUCTIONS 
PER PASS 

ALIGN INSTRUCTIONS 
GET CURRENT CONTROL 
SAVE IN BL 

SET TIMER ENABLE BIT 
STOP INTERRUPTS 
ENABLE TIMER 


END MACRO 
COUNT THIS PASS 
JUMP IF COMPLETE 


CALL 

GET_TIMER 

; OBTAIN FINAL COUNT 

POP 

DI 

; RESTORE DI 

POP 

BP 

; RESTORE BP 



PUBLIC 

JJMOVTIME 


■ * —- 


_DMOVTIME 

PROC 

NEAR 




PUSH 

BP 


; SAVE FRAME 



MOV 

BP, SP 


i 





CLI 


; STOP INTERRUPTS 



OUT 

PPI_PORT, AL 

; ENABLE TIMER 


ML: 

REPT 

100 

; DO 100 MULTIPLIES 



MARCH 1987 


FORTRAN PROGRAMMERS 

LCS ANNOUNCES F77L LAHEY FORTRAN VERSION 2.20 
WE JUST MADE OUR TOP RATED FORTRAN LANGUAGE SYSTEM BETTER. 

“Lahey’s F77L FORTRAN is the compiler of choice. It’s definitely a 
‘Programmer's FORTRAN, ’ with features to aid both the casual and 
the professional programmer. . . F77L compiled the five files in a total 
of 12 minutes, which was 4 times as fast as MS FORTRAN and an 
astounding 6 times as fast as Pro FORTRAN...” 

—Editor’s Choice PC Magazine 


HERE ARE JUST A FEW OF THE REASONS 
WHY F77L IS THE COMPILER OF CHOICE: 

• Full Implementation of the • Clear and Precise 

ANSI 77 Standard English Diagnostics 

• Fast Compilation—outruns • Long Variable Names— 

everything on the market Up to 31 Characters 

• Powerful Multi-Featured • COMPLEX* 16, 

Source On-Line Debugger LOGICAL* 1 and 

• Popular Extensions for easy INTEGER*2 

porting of mainframe and • IEEE Standard 
mini computer programs Floating Point 

(Including NAMELIST) • Compatibility with popular 

• Recursion—allocates local third party software 

variables on the stack • Unmatched Technical 

• Arrays and COMMONS Support with an on-line 

greater than 64K bulletin board 

NEW FEATURES WITH VERSION 2.20: 

• Cross reference and source listings 

• Allocation maps of COMMON variables and arrays 

• In-line comments 

• IMPLICIT NONE compiler option 

• Faster Execution 

• Source On-Line Debugger (SOLD) includes: 

Trace Execution; No Relinking required; 

On-screen Listing; No effect on code size 

Call about our New F77L development tools: 

Lahey Profiler Mathematical Functions Library Overlay Linker 



It is more than just features that make F77L an outstanding 
product; it is the years of experience behind the software. At 
Lahey Computer Systems, we have been developing 
FORTRAN compilers since 1967 and we are committed to 
keeping F77L the industry leader. 

When PC Magazine selected our version 1.35 as the Editor’s 
Choice among PC FORTRANs, we were pleased but not 
completely satisfied—we knew we could improve the 
product. F77L Version 2.20 increases our lead over the 
competition. F77L’s precise diagnostics, advanced debug 
package, helpful user screens and comprehensive manual 
make it a complete and easy to use high productivity tool. 

When evaluating any software package, an important factor 
to consider is the value of your time. F77L saves you time and 


money the moment you start using it. Our FORTRAN 
Language System has the key features you need to increase 
productivity and get the job done. Other PC FORTRANs may 
be cheaper than F77L, but none are less expensive to use. 

F77L—THE PROGRAMMER S FORTRAN 

Price: $477.00 Includes Free UPS 2nd Day shipping. 

System Requirements: MS-DOS or PC-DOS (2.0 or greater), 

256K, math coprocessor (8087-80287) 

TO ORDER OR FOR MORE INFORMATION: 

702-831-2500 

Lahey Computer Systems, Inc. 

P.O. Box 6091, Incline Village, NV 89450 
Telex: 9102401256 



International Representatives: 

Canada: Barry Mooney & Assoc., Tel. (902)6652941 • England: Grey Matter Ltd. Tel. (0364)53499 • Switzerland: DST Comp. Services. Tel. (022)989188 
Denmark: Ravenholm Computing. Tel. (02)887249 • Australia: Comp. Transitions, Tel. (03)5372786 • Japan: Microsoft ware Inc.. Tel. (03)8138222 

MS-DOS & MS FORTRAN are trademarks of Microsoft Corporation. Pro FORTRAN refers to IBM PC Professional FORTRAN by Ryan McFarland 


CIRCLE NO. 128 ON READER SERVICE CARD 




UPDATE 


POP 

BP 

RESTORE BP 

RET 


RETURN 

JWMVSTIME 

ENDP 


•***************************************************************. j 

; _DMVSTIME 

; 

; TIME 

EXECUTION OF REP MOVSW INSTRUCTION 


PUBLIC J5MVSTIME 


_DMVSTIME 

PROC NEAR 


PUSH 

BP 

SAVE FRAME 

MOV 

BP, SP 


PUSH 

DS 

SAVE DS 

PUSH 

ES 

SAVE ES 

PUSH 

SI 

SAVE SI i 

PUSH 

DI 

SAVE DI 

CALL 

SETUP_TIMER 

SET UP TIMER 

DB 

066H 

32 BIT OPERANDS: 

XOR 

DI, DI 

CLEAR EDI 

DB 

066H 

32 BIT OPERANDS: 

XOR 

SI, SI 

CLEAR ESI 

DB 

066H 

32 BIT OPERANDS: 

XOR 

CX, CX 

CLEAR ECX 

MOV 

DI, TESTSEG 


MOV 

ES, DI 


MOV 

DS, DI 


LEA 

SI, TESTSEG_START 

DS:SI *> TEST SEGMENT P 

LEA 

DI, TESTSEG_START 

ES:DI -> TEST SEGMENT 

MOV 

CX, [BP+4] 

GET COUNT ARGUMENT 

IN 

AL, PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, AL 

SAVE IN BL 

OR 

AX, 1 

SET TIMER ENABLE BIT 

CL I 


STOP INTERRUPTS 

CLD 


SET FORWARD DIRECTION 

OUT 

PPI_PORT, AL 

ENABLE TIMER 

DB 

066H 

32 BIT OPERANDS: 

i REP MOVSW ; 

RUN TEST 

MOV 

AL, BL 

RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 


STI 


START INTERRUPTS . 

CALL 

GET_TIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

POP 

SI 

RESTORE SI 

POP 

ES 

RESTORE ES 

POP 

DS 

RESTORE DS 

POP 

BP 

RESTORE BP 

RET 


RETURN 

DMVSTIME 

ENDP 


.***************************************************************. { 

; . _WPSHTIME 


; - TIME 

EXECUTION OF PUSHA INSTRUCTION 

EVEN 



DB 

? 

PUBLIC _WPSHTIME 


_WPSHTIME 

PROC NEAR 


PUSH 

BP 

SAVE FRAME 

MOV 

BP, SP 


CALL 

SETUP_TIMER 

SET UP TIMER 

MOV 

AX, [BP+4] 

•GET COUNT ARGUMENT 

CUD 


MAKE DOUBLE WORD 

MOV 

CX, 200 


DIV 

CX 

DIVIDE BY MOVS/LOOP 

MOV 

CX, AX 


IN 

AL, PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, AL 

SAVE IN BL 

OR 

AX, 1 

SET TIMER ENABLE BIT 

CLI 


STOP INTERRUPTS 

OUT 

PPI_PORT, AL 

ENABLE TIMER 

WSL: REPT 

25 

PUSH THE REGISTERS 

DB 

60H 


ENDM 


END MACRO 

MOV 

SP, BP 

PUT THE STACK BACK 

LOOP 

WSL 

LOOP UNTIL DONE 

MOV 

AL, BL 

RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 


STI 


START INTERRUPTS 

CALL 

GET_TIMER 

OBTAIN FINAL COUNT 

MOV 

SP, BP 

PUT THE STACK BACK 

POP 

BP 

RESTORE BP 

RET 


RETURN 


JMP 

BXL 

LOOP BACK IF NOT DONE 

BXD: MOV 

AL, BL 

RESTORE CONTROL VALUE 

OUT 

PPIMPORT, AL 


STI 


START INTERRUPTS 

CALL 

GET_TIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

POP 

BP 

RESTORE BP 

RET 


RETURN 

_BDAATIME 

ENDP 


. *************************************************************** . 

; _BMVSTIME 

» 

; time 

EXECUTION OF REP MOVSB INSTRUCTION ; j 

.*****»****«■> 

PUBLIC _BMVSTIME 


_BMVSTIME . 

PROC NEAR 

' 

PUSH 

BP 

SAVE FRAME 

MOV 

BP, SP 


PUSH 

DS 

SAVE DS 

PUSH 

ES - 

SAVE ES 

PUSH 

-Si 

SAVE SI ' 

PUSH 

DI 

SAVE DI 

CALL 

SETUP_TIMER 

SET UP TIMER 

MOV 

DI, TESTSEG 


MOV 

ES, DI 


MOV 

DS, DI 

: V : X. ' V ! :Y ^ ' 

LEA 

SI, TESTSEG_START . 

DS:SI *> TEST SEGMENT 

LEA 

DI, TESTSEG_START 

ES:DI -> TEST SEGMENT 

MOV 

CX, [BP+4] 

GET COUNT ARGUMENT 

IN 

AL, PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, AL 

SAVE IN BL 

, 0R 

AX, 1 

SET TIMER ENABLE;BIT 

CLI 


STOP INTERRUPTS 

CLD 


SET FORWARD DIRECTION 

OUT 

PPI_PORT, AL 

ENABLE TIMER 

REP MOVSB i 

RUN TEST 

MOV 

AL, BL 

RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 


STI 


START INTERRUPTS 

CALL 

GETJTIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

POP 

SI 

RESTORE SI 

POP 

ES 

RESTORE ES 

POP 

DS 

RESTORE DS 

POP 

BP 

RESTORE BP 

RET 


RETURN 

BMVSTIME 

ENDP 


.***************************************************************. 

; _WMVSTIME 

; 

; TIME EXECUTION OF REP MOVSW INSTRUCTION > . c ? 

* 

PUBLIC _WMVSTIME 


_WMVSTIME 

PROC NEAR 


PUSH 

BP 

SAVE FRAME 

MOV 

BP, SP 


PUSH 

DS 

SAVE DS 

PUSH 

ES 

SAVE ES 

PUSH 

SI " ■ 

SAVE SI 

PUSH 

DI 

SAVE DI 

CALL 

SETUP_TIMER 

SET UP TIMER 

MOV 

DI, TESTSEG 


MOV 

ES, DI 


MOV 

DS, DI 


! lea 

SI, TESTSEG_START 

DS:SI -> TEST SEGMENT 

LEA 

DI, TESTSEG_START 

ES:DI -> TEST SEGMENT 

MOV 

CX, [BP+4] 

GET COUNT ARGUMENT 

IN 

AL, PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, AL 

SAVE IN BL 

OR 

AX, 1 

SET TIMER ENABLE BIT 

CLI 


STOP INTERRUPTS 

CLD 


SET FORWARD DIRECTION 

OUT 

PPI_PORT, AL 

ENABLE TIMER 

REP MOVSW ; 

RUN TEST 

MOV 

AL, BL 

RESTORE CONTROL VALUE 

OUT 

PPIMPORT, AL 


STI 


START INTERRUPTS 

CALL 

* GET_TIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

POP 

SI 

RESTORE SI 

POP 

ES 

RESTORE ES 

POP 

DS .. 

RESTORE DS 


MARCH 1987 


81 













STRAIGHT TALK 


Our NETBIOS 
LAN/Gateway 

... has been designed by our professionals to meet 
the most exacting standards. If your installation 
has a unique condition , just call us. Our 
technicians in Scottsdale will fix it , or under our 
QuickFix Program * will be on your doorstep 
within 48 hours.. .probably much sooner. And if 
they can't make it ; call me, and I will. 

Jim Pitre, 
President 



With Linkup products your beginning purchase is just 
that...a foundation that works. 

Doesn’t it make ever so much more sense to develop 
your software and computer systems as upgradable 
assets? Begin with our Linkup 3270 Interactive Ter¬ 
minal Facility (ITF) connection to the mainframe, then 
expand or change as your needs require to include... 

...File Transfer. Two programs for your considera¬ 
tion. One interfaces with the TSO or CMS editor; one 
works with IBM 3270 PC host-based file transfer 
under TSO, CMS or CICS... 

...or Application Program Interface. Integrate your 
own programs to use the capabilities of 3270 
SNA/BSC, 3770 SNA and 3780 BSC emulations... 

...or Linkup SpeedPrint. Data rates up to 19.2 Kbps 
from an application or disk to a dedicated high-speed 
printer, eliminating host/local print conflict. 

...or LAN/Gateway. With the addition of interfacing 


modules the LinkUp 3270 ITF runs on most Local 
Area Networks. Use the advanced package for 
datacom between PCs on a LAN and IBM or 
compatible host. 

These intelligent software capabilities offer the 
options your computer environment just may require. 
For today. For tomorrow. 

* QuickFix Program 

In addition to telephone assistance from Scottsdale, Infor¬ 
mation Technologies, Inc. stands ready to help you in critical 
situations. We’re different because when our product is at fault 
and it can’t be fixed from Scottsdale, we will come to you 
anywhere in the contiguous 48 states at no charge. If the problem 
is caused by your PC, the way you’ve configured it, the main¬ 
frame, or any reason other than our product, then you pay our 
standard consulting fee plus expenses. 


•SOS - -! 


Designed, engineered and 
manufactured in the U.S.A. 






INFORMATION 
TECHNOLOGIES INC. 


7850 East Evans Road, Scottsdale, Arizona 85260 1-800-431-3460 1-602-998-1033 

Call us. Our engineers speak SNA/SDLC, BSC, ASCII, EBCDIC and Human. 


CIRCLE NO. 138 ON READER SERVICE CARD 



UPDATE 


_WPSHTIME ENDP 

. *************************************************************** . 

; _DPSHTIME 

; TIME EXECUTION OF PUSHA INSTRUCTION 

.***************************************************************. 
i i 

EVEN 

DB ?, ?, ? 

PUBLIC _DPSHTIME 
_DPSHTIME PROC NEAR 

PUSH BP 

MOV BP, SP 

CALL SETUP_TIMER 

SAVE FRAME 

SET UP TIMER 

MOV AX, [BP+4] 

CWD 

MOV CX, 200 

GET COUNT ARGUMENT 

MAKE DOUBLE WORD 

DIV CX 

MOV CX, AX 

AND SP, OFFFCH 

DIVIDE BY MOVS/LOOP 

ALIGN SP 

PUSH AX 

PUSH BP 

MOV BP, SP 

DUMMY 

SAVE BP 

IN AL, PPI_PORT 

MOV BL, AL 

OR AX, 1 

GET CURRENT CONTROL 

SAVE IN BL 

SET TIMER ENABLE BIT 

CLI 

OUT PPI_PORT, AL 

DSL: REPT 25 

STOP INTERRUPTS 

ENABLE TIMER 

PUSH THE BIG REGISTERS 

DB 66H, 60H 

ENDM 

MOV SP, BP 

END MACRO 

PUT THE STACK BACK 

LOOP DSL 

MOV AL, BL 

OUT PPI_PORT, AL 

LOOP UNTIL DONE 

RESTORE CONTROL VALUE 

ST I 

POP BP 

CALL GET_TIMER 

START INTERRUPTS 

OBTAIN FINAL COUNT 

MOV SP, BP 

POP BP 

RET 

PUT THE STACK BACK 

RESTORE BP 

RETURN 

_DPSHTIME ENDP 

.***************************************************************. 

/ / 

; _BROMTIME 

; TIME EXECUTION OF REP MOVSB INSTRUCTION FROM ROM 

•*★****★★★*★★**★★★★★★★*★★*★**★*★★***★★★★★★*★**★*★★★★★**★★★★*★★*★• 
i / 

PUBLIC _BROMTIME 

_BROMTIME PROC NEAR 

PUSH BP 

MOV BP, SP 

SAVE FRAME 

PUSH DS 

PUSH ES 

PUSH SI 

SAVE DS 

SAVE ES 

SAVE SI 

PUSH DI 

CALL SETUP_TIMER 

MOV DI, TESTSEG 

SAVE DI 

SET UP TIMER 

MOV ES, DI 

MOV DI, 0F000H 

MOV DS, DI 

SET DS TO ROM START 

MOV SI, 0 

LEA DI, TESTSEG_START 

MOV CX, [BP+4] 

DS:SI -> ROM 

ES:DI -> TEST SEGMENT 

GET COUNT ARGUMENT 

IN AL, PPI_PORT 

MOV BL, AL 

OR AX, 1 

GET CURRENT CONTROL 

SAVE IN BL 

SET TIMER ENABLE BIT 

CLI 

CLD 

OUT PPI_PORT, AL 

STOP INTERRUPTS 

SET FORWARD DIRECTION 

ENABLE TIMER 

REP MOVSB 

MOV AL, BL 

OUT PPI_PORT, AL 

RUN TEST 

RESTORE CONTROL VALUE 

ST I 

CALL GET_TIMER 

POP DI 

START INTERRUPTS 

OBTAIN FINAL COUNT 

RESTORE DI 

POP SI 

POP ES 

POP DS 

RESTORE SI 

RESTORE ES 

RESTORE DS 

POP BP 

RET 

_BROMTIME ENDP 

RESTORE BP 

RETURN 



,*************************************************************** 


_WROMTIME 

TIME EXECUTION OF REP MOVSW INSTRUCTION FROM ROM ; 

***************************************************************, 


_WROMTIME 

PUBLIC _WROMTIME 

PROC NEAR 


PUSH 

BP 


; SAVE FRAME 

MOV 

BP, 

SP 


PUSH 

DS 


; SAVE DS 

PUSH 

ES 


; SAVE ES 

PUSH 

SI 


; SAVE SI 

PUSH 

DI 


; SAVE DI 

CALL 

SETUP_TIMER 

; SET UP TIMER 

MOV 

DI, 

TESTSEG 


MOV 

ES, 

DI 


MOV 

DI, 

0F000H 

; SET DS TO ROM START 

MOV 

DS, 

DI 


MOV 

SI, 

0 

; DS:SI -> ROM 

LEA 

DI, 

TESTSEG_START 

; ES:DI -> TEST SEGMENT 

MOV 

CX, 

[BP+4] 

; GET COUNT ARGUMENT 

IN 

AL, 

PPI_PORT 

; GET CURRENT CONTROL 

MOV 

BL, 

AL 

; SAVE IN BL 

OR 

AX, 

1 

; SET TIMER ENABLE BIT 

CLI 



; STOP INTERRUPTS 

CLD 



; SET FORWARD DIRECTION 

OUT 

PPI 

PORT, AL 

; ENABLE TIMER 

REP MOVSW 


; RUN TEST 

MOV 

AL, 

BL 

; RESTORE CONTROL VALUE 

OUT 

PPI 

PORT, AL 


ST I 



; START INTERRUPTS 

CALL 

GET 

_TIMER 

; OBTAIN FINAL COUNT 

POP 

DI 


; RESTORE DI 

POP 

SI 


; RESTORE SI 

POP 

ES 


; RESTORE ES 

POP 

DS 


; RESTORE DS 

POP 

BP 


; RESTORE BP 

RET 



; RETURN 

_WROMTI ME 

ENDP 



*************************************************************** 


_DROMTIME 

TIME EXECUTION OF REP MOVSW INSTRUCTION FROM ROM 


***************************************************************, 


_DROMTIME 

PUSH 

PUBLIC _DROMTIME 

PROC NEAR 

BP 

SAVE FRAME 

MOV 

BP, SP 


PUSH 

DS 

SAVE DS 

PUSH 

ES 

SAVE ES 

PUSH 

SI 

SAVE SI 

PUSH 

DI 

SAVE DI 

CALL 

SETUP_TIMER 

SET UP TIMER 

DB 

066H 

32 BIT OPERANDS: 

XOR 

DI, DI 

CLEAR EDI 

DB 

066H 

32 BIT OPERANDS: 

XOR 

SI, SI 

CLEAR ESI 

DB 

066H 

32 BIT OPERANDS: 

XOR 

CX, CX 

CLEAR ECX 

MOV 

DI, TESTSEG 


MOV 

ES, DI 


MOV 

DI, 0F000H 

SET DS TO ROM START 

MOV 

DS, DI 


MOV 

SI, 0 

DS:SI -> ROM 

LEA 

DI, TESTSEG_START 

ES:DI -> TEST SEGMENT 

MOV 

CX, [BP+4] 

GET COUNT ARGUMENT 

IN 

AL, PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, AL 

SAVE IN BL 

OR 

AX, 1 

SET TIMER ENABLE BIT 

CLI 


STOP INTERRUPTS 

CLD 


SET FORWARD DIRECTION 

OUT 

PPI_PORT, AL 

ENABLE TIMER 

DB 

066H 

32 BIT OPERANDS: 

REP MOVSW ; 

RUN TEST 

MOV 

AL, BL 

RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 


STI 


START INTERRUPTS 

CALL 

GET_TIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

POP 

SI 

RESTORE SI 

POP 

ES 

RESTORE ES 

POP 

DS 

RESTORE DS 


MARCH 1987 


83 

















UPDATE 


POP 

BP 

RESTORE BP 

RET 


RETURN 

JJROMTIME 

ENDR 

- . 

.***************************************************************. 

_BVIDTIME 

; 

; TIME 

EXECUTION OF REP STOSB INTO VIDEO MEMORY 


PUBLIC JBVIDTIME 

v *. ■ 

: 

JBVIDTIME 

PROC NEAR 


PUSH 

BP 

SAVE FRAME 

MOV 

BP, SP 


PUSH 

ES 

SAVE ES 

PUSH 

DI 

SAVE DI 

CALL 

SETUPJIMER 

SET UP TIMER 

MOV 

AX, VIDBASE 

GET BASE ADDRESS 

MOV 

ES, AX 


MOV 

o 

o 

ES:DI •> VIDEO MEMORY 

MOV 

CX, [BP+4] 

GET COUNT ARGUMENT 

IN 

AL, PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, AL 

SAVE IN BL 

OR 

AX, 1 

SET TIMER ENABLE BIT 

CL I 


STOP INTERRUPTS 

CLD 


SET FORWARD DIRECTION 

OUT 

PPI_PORT, AL 

ENABLE TIMER 

REP STOSB ' 

RUN TEST 

MOV 

AL, BL .. 

RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 

\' 

ST I 


START INTERRUPTS 

CALL 

GET_TIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

POP 

ES 

RESTORE ES 

POP 

BP 

RESTORE BP 

RET 


RETURN 


BVIDTIME 

ENDP 



***************************************************************. 


_WVIDTIME 

; 


TIME EXECUTION OF REP STOSW INTO VIDEO MEMORY ; 



PUBLIC JUVIDTIME 

# 


WVIDTIME 

PROC NEAR 


PUSH 

BP 

SAVE FRAME 

MOV 

BP, SP 


PUSH 

ES 

SAVE ES 

PUSH 

DI 

SAVE DI 

CALL 

SETUP _TIMER 

SET UP TIMER 

MOV 

AX, VIDBASE 

GET BASE ADDRESS 

MOV 

ES, AX 


MOV 

DI, 0 

ES:DI -> VIDEO MEMORY 

MOV 

CX, CBP+43 

GET COUNT ARGUMENT 

IN 

AL, PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, AL 

SAVE IN BL 

OR 

AX, 1 

SET TIMER ENABLE BIT 

CL I 


STOP INTERRUPTS 

CLD 


SET FORWARD DIRECTION 

, v OUT 

PPIPORT, AL 

ENABLE TIMER 

REP STOSW 

RUN TEST 

MOV 

AL, BL 

RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 


; STI 


START INTERRUPTS 

CALL 

GET TIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

v . POP 

ES . . . 

RESTORE- ES, 

pop ; 

BP 

RESTORE BP 

RET 


RETURN 


WVIDTIME 

ENDP 



***************************************************************. 


J3VIDTIME 



TIME EXECUTION OF REP STOSW INTO VIDEO MEMORY 



PUBLIC JDVIDTIME 



DVIDTIME 

PROC NEAR 


PUSH 

BP 

SAVE FRAME 

MOV 

BP, SP 


PUSH 

ES 

SAVE ES 

PUSH 

DI 

SAVE DI 

CALL 

SETUP_TIMER 

SET UP TIMER 

DB 

066H 

32 BIT OPERANDS: 

XOR 

DI, DI 

CLEAR EDI 

v y ■ ■ ^ db 

066H 

32 BIT OPERANDS: 



XOR 

CX, CX 

CLEAR ECX 


MOV •: 

AX, VIDBASE 

GET BASE ADDRESS 


MOV 

ES, AX 



DB 

066H 

32 BIT OPERANDS: 


MOV 

AX, 0700H 

MOV EAX, 07000700H 


DW 

0700H 



MOV 

CX, CBP+43 

GET COUNT ARGUMENT 


IN 

AL, PPIJMJRT 

GET CURRENT CONTROL 


MOV 

BL, AL 

SAVE IN BL 


OR 

AX, 1 

SET TIMER ENABLE BIT 


CLI 


STOP INTERRUPTS 


CLD 


SET FORWARD DIRECTION 


OUT 

PPIMPORT, AL 

ENABLE TIMER 


DB 

066H 

32 BIT OPERANDS: 


REP STOSW , 

RUN TEST 


MOV 

AL, BL 

RESTORE CONTROL VALUE 


OUT 

PPI_PORT, AL 



STI 


START INTERRUPTS 


CALL ; 

GETJTIMER 

OBTAIN FINAL COUNT 


POP 

DI 

RESTORE DI 


POP 

ES 

RESTORE ES 


POP 

BP 

RESTORE BP 


RET 


RETURN 


DVIDTIME 

ENDP 




_SETUPJ/IOEO 




DETECT 

THE TYPE OF VIDEO CARD AND SAVE THE BASE ; 


***************************************************************. 



PUBLIC _SETUP_VIDEO 


. 

SETUP 

VIDEO 

PROC NEAR 



PUSH 

BP 

SAVE REGISTERS 


PUSH 

ES 



PUSH 

SI 



PUSH 

DI 



I NT 

11H 

EQUIPMENT DETERMINATION 


AND 

AL, 30H 

MASK DISPLAY BITS 


CMP 

AL, 30H 

CHECK FOR MONOCHROME 


MOV 

AX, OBOOOH 

MONOCHROME BASE 


JE 

SVM 

JUMP IF MONOCHROME 


MOV 

AX, 0B800H 

COLOR BASE 

SVM: 

MOV 

VIDBASE, AX 

SAVE BASE ADDRESS 


POP 

DI 

RESTORE REGISTERS 


POP 

SI 



POP 

ES 



POP 

BP 



RET 


RETURN 0 


SETUP 

VIDEO 

ENDP 



***************************************************************. 



_FPTIME 


; 



TIME EXECUTION OF FLOATING POINT DIVIDE ; 



EVEN 


* 


DB 

? 




PUBLIC _FPTIME 


_FPTtME 

PROC NEAR 

■ ' :.v: . ;■ .. . ,y 


PUSH 

BP 

‘SAVE FRAME 


MOV 

BP, SP 



PUSH 

DI 

SAVE DI 


CALL 

SETUP_TIMER 

SET UP TIMER 


MOV 

DI, 0 

CLEAR DI 


MOV 

AX, CBP+43 

GET COUNT ARGUMENT 


ADD 

AX, 99 

ROUNO UP 


MOV 

CX, 100 

DIVIDE BY 100 = 


DIV 

CL 

NUMBER OF INSTRUCTIONS 


MOV 

CL, AL 

PER PASS 


IN 

AL, PPI_PORT 

GET CURRENT CONTROL 


MOV 

BL, AL 

SAVE IN BL 


OR 

AX, 1 

SET TIMER ENABLE BIT 


FNINIT 


INIT FP 


FLD1 


DIVIDE 1.0 


FLD1 


BY 1.0 


CLI 


STOP INTERRUPTS 


OUT 

PPIMPORT, AL 

ENABLE TIMER 

FL: 

REPT 

100 

DO 100 DIVIDES 


FDIV 

ST(1), ST 



ENDM 


END MACRO 


DEC 

CX 

COUNT THIS PASS 


JZ 

FD 

JUMP IF COMPLETE 


JMP 

FL . 

LOOP BACK IF NOT DONE 


84 


PC TECH JOURNAL 
















RESTORE CONTROL VALUE 


FD: MOV 

OUT 

STI 

AL, BL 

PPI_PORT, AL 

RESTORE CONTROL VALUE 

START INTERRUPTS 

CALL 

GET_TIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

POP 

BP 

RESTORE BP 

RET 

_FPTIME 

ENDP 

RETURN 


.********************************★****************************** 


_WEMPTIME 

TIME EXECUTION OF PUSHA INSTRUCTION 


, *************************************************************** 


EVEN 



DB 

?, ?, ? 



PUBLIC _WEMPTIME 


_WEMPTIME 

PROC NEAR 


PUSH 

BP 

; SAVE FRAME 

PUSH 

DI 

; SAVE DI 

MOV 

BP, SP 


CALL 

SETUP_TIMER 

; SET UP TIMER 

MOV 

AX, CBP+6] 

; GET COUNT ARGUMENT 

CWD 


; MAKE DOUBLE WORD 

MOV 

CX, 200 


DIV 

CX 

; DIVIDE BY MOVS/LOOP 

MOV 

CX, AX 


IN 

AL, PPI_PORT 

; GET CURRENT CONTROL 

MOV 

BL, AL 

; SAVE IN BL 

OR 

AX, 1 

; SET TIMER ENABLE BIT 

CLI 


; STOP INTERRUPTS 

MOV 

DX, SS 

; SAVE STACK SEGMENT 

MOV 

SS, EMMBASE 

; PUT STACK IN EMM 

MOV 

SP, 400 

; SET SP FOR PUSHES 

MOV 

DI, SP 

; SAVE THIS NUMBER 

OUT 

PPI_PORT, AL 

; ENABLE TIMER 

EPL: REPT 

25 

; PUSH THE REGISTERS 

DB 

60H 


ENDM 



MOV 

</> 

O 

; PUT THE STACK BACK 

LOOP 

EPL 

; LOOP UNTIL DONE 

MOV 

AL, BL 

; RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 


MOV 

SS, DX 

; RESTORE ORIGINAL STACK 

MOV 

SP, BP 


STI 


; START INTERRUPTS 

CALL 

GETJIMER 

; OBTAIN FINAL COUNT 

POP 

DI 

; RESTORE DI 

POP 

BP 

; RESTORE BP 

RET 


; RETURN 

_WEMPTIME 

ENDP 



, *************************************************************** 


.DEMPTIME 


; TIME EXECUTION OF PUSHA INSTRUCTION 

.***************************************************************. 

EVEN 

DB 

? 

PU8LIC _DEMPTIME 


_DEMPTIME 

PROC NEAR 


PUSH 

BP 

SAVE FRAME 

PUSH 

DI 

SAVE DI 

MOV 

BP, SP 


CALL 

SETUP_TIMER 

SET UP TIMER 

MOV 

AX, [8P+6] 

GET COUNT ARGUMENT 

CWD 


MAKE DOUBLE WORD 

MOV 

CX, 200 


DIV 

CX 

DIVIDE BY MOVS/LOOP 

MOV 

CX, AX 


IN 

AL, PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, AL 

SAVE IN BL 

OR 

AX, 1 

SET TIMER ENABLE BIT 

CLI 


STOP INTERRUPTS 

MOV 

DX, SS 

SAVE STACK SEGMENT 

MOV 

SS, EMMBASE 

PUT STACK IN EMM 

MOV 

SP, 800 

SET SP FOR PUSHES 

MOV 

DI, SP 

SAVE THIS NUMBER 

OUT 

PPI_PORT, AL 

ENABLE TIMER 

EDL: REPT 

25 

PUSH THE BIG REGISTERS 

DB 

66H, 60H 


ENDM 


END MACRO 

MOV 

SP, DI 

PUT THE STACK BACK 

LOOP 

EDL 

LOOP UNTIL DONE 


MOV 

AL, BL 

RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 


MOV 

SS, DX 

RESTORE ORIGINAL STACK 

MOV 

SP, BP 


STI 


START INTERRUPTS 

CALL 

GET_TIMER 

OBTAIN FINAL COUNT 

POP 

DI 

RESTORE DI 

POP 

BP 

RESTORE BP 

RET 


RETURN 

_DEMPTIME 

ENDP 



.*************************************************************** 


_BEMMTIME 

TIME EXECUTION OF REP MOVSB INSTRUCTION 

i*************************************************************** 


PUBLIC _BEMMTIME 

_BEMMTIME 

PROC NEAR 


PUSH 

BP 

; SAVE FRAME 

MOV 

BP, SP 


PUSH 

DS 

; SAVE DS 

PUSH 

ES 

; SAVE ES 

PUSH 

SI 

; SAVE SI 

PUSH 

DI 

; SAVE DI 

CALL 

SETUP_TIMER 

; SET UP TIMER 

MOV 

DI, EMMBASE 

; SET UP EMM BASE ADDRESS 

MOV 

ES, DI 


MOV 

DS, DI 


XOR 

DI, DI 

; ES:DI •> TEST SEGMENT 

XOR 

SI, SI 

; DS:SI •> TEST SEGMENT 

MOV 

CX, [BP+4] 

; GET COUNT ARGUMENT 

IN 

AL, PPI_PORT 

; GET CURRENT CONTROL 

MOV 

BL, AL 

; SAVE IN BL 

OR 

AX, 1 

; SET TIMER ENABLE BIT 

CLI 


; STOP INTERRUPTS 

CLD 


; SET FORWARD DIRECTION 

OUT 

PPI_PORT, AL 

; ENABLE TIMER 

REP MOVSB 

; RUN TEST 

MOV 

AL, BL 

; RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 


STI 


; START INTERRUPTS 

CALL 

GETJIMER 

; OBTAIN FINAL COUNT 

POP 

DI 

; RESTORE DI 

POP 

SI 

; RESTORE SI 

POP 

ES 

; RESTORE ES 

POP 

DS 

; RESTORE DS 

POP 

BP 

; RESTORE BP 

RET 


; RETURN 

_BEMMTIME 

ENDP 



.A**************************************************************, 


_WEMMTIME 

TIME EXECUTION OF REP MOVSW INSTRUCTION 
*************************************************************** 

PUBLIC _WEMMTIME 
WEMMTIME PROC NEAR 


PUSH 

BP 


SAVE FRAME 

MOV 

BP, 

SP 


PUSH 

DS 


SAVE DS 

PUSH 

ES 


SAVE ES 

PUSH 

SI 


SAVE SI 

PUSH 

DI 


SAVE DI 

CALL 

SETUP_TIMER 

SET UP TIMER 

MOV 

DI, 

EMMBASE 

SET UP EMM BASE ADDRESS 

MOV 

ES, 

DI 


MOV 

DS, 

DI 


XOR 

DI, 

DI 

ES:DI -> TEST SEGMENT 

XOR 

SI, 

SI 

DS:SI -> TEST SEGMENT 

MOV 

CX, 

[BP+4] 

GET COUNT ARGUMENT 

IN 

AL, 

PPI_PORT 

GET CURRENT CONTROL 

MOV 

BL, 

AL 

SAVE IN BL 

OR 

AX, 

1 

SET TIMER ENABLE BIT 

CLI 



STOP INTERRUPTS 

CLD 



SET FORWARD DIRECTION 

OUT 

PPI 

_PORT, AL 

ENABLE TIMER 

REP MOVSW 


RUN TEST 

MOV 

AL, 

BL 

RESTORE CONTROL VALUE 

OUT 

PPI 

PORT, AL 


STI 



START INTERRUPTS 

CALL 

GET 

_TIMER 

OBTAIN FINAL COUNT 

POP 

DI 


RESTORE DI 

POP 

SI 


RESTORE SI 

POP 

ES 


RESTORE ES 


MARCH 1987 


85 


















Windows, Data Entry, Help Management, Menus, 

Text Editing, plus... 










ii 


Vitamin C 

It’s good for your system! 


The Vitamin C Difference 


With Vitamin C t your applications come 
alive with windows that explode into view! 
Data entry windows and menus become a snap, 
and context sensitive pop-up help messages 
are nearly automatic. 

With VCScreen, you’ll save time by inter¬ 
actively painting windows and forms so what 
you see is what you get! Then, one button 
generates C source cdde ready to plug into 
your program and link with Vitamin C. 

Easy enough for the beginner. Versatile 
enough forthe professional. Vitamin C’s open- 
ended design is full of "hooks’’ so you can 
intercept and "plug-in” special handlers to 
customize or add features to most routines. 

Of course, Vitamin C includes all source 
code FREE, with no hidden charges. It always 
has. That means you’ll have everything you 
need to adapt to special needs without spending 
hundreds of dollars more. 


Windows 


Create as many windows as you like with 
one easy function. Vitamin C automatically 
takes care of complicated tasks like saving 
and restoring the area under a window. 

Options include titles, borders, colors, pop¬ 
up, pull-down, zoom-in, 4-way scrolling, scroll 
bars, sizes up to 32 k, text file displays editing, 
cursor display, and more. 

Unique built-in feature lets users move and 
resize windows during run-time via a definable 
key. 

Access the current window by default or a 
specific window any time, even if if s hidden or 
invisible. Save and load windows on disk for 
more versatility! 


Data Entry 


Flexible dBase-like data entry and display 
routines feature protected, invisible, required, 
and scrolling fields. Picture clause formatting, 
full color/attribute control, selection sets, single 
field and full screen input, and unlimited data 
validation via standard and user definable 
routines. That means you aren’t locked into 
one way of doing things. 

Vitamin C even provides true right-to-left 
input of numeric fields with dynamic display of 
separators & currency symbols. 


High Level Functions 


Use our intergrated help management, 
multi-level menus, and text file routines, or 
build your own handlers using Vitamin C’s basic 
windowing and data entry routines. 

Standard help handler provides context 
sensitive pop-up help messages any time the 
program awaits key strokes. The help text file 
is stored on disk and indexed for quick access. 
So easy to use that a single function initializes 
& services requests by opening a window, 
locating, formatting, displaying, and paging 
through the message. 

Multi-level “Macintosh” & “Lotus” style 
menus make user interfaces and front ends a 
snap. Menus can call other menus, functions, 
even data entry screens, quickly and easily. 

Text editor windows can be opened for 
pop-up note pads, memofields, orgeneral pur¬ 
pose editing. Features include insert, delete, 
word wrap, and paragraph formatting. 


VCScreen 

Screen Painter/Code Generator 

Just as Vitamin C’s reusable functions speed 
your programming, VCSreen makes it even 
faster and easier by automatically generating 
C source code for your data entry screens! 

With VCScreen’s interactive screen editor, 
you actually draw your forms. You can define 
input, output and constant fields, headings, 
boxes, lines and even a window for the form to 
run in. 

What you see is what you get If you don’t 
like the position of an object, just "pick it up” 
with the cursor and move it! Changing colors, 
attributes, copying, and deleting is just as 
easy. 

VCScreen generates readable C source 
code. It declares variables with names you 
provide and can even generate structures. 

With VCScreen choosing the right functions, 
parameters and sequences, and Vitamin C 
supplying the functions to choose from, you can 
stop worrying about semi-colons, matching 
braces* and calling conventions and concentrate 
on creating your application! 


30 Day 
Money Back 
Guarantee 


Better than a brochure. More than a demo 
disk. If you’re not satisfied, simply return 
the package within 30 days and receive 
a full refund of the purchase price. 


Vitamin C .$225.00 

Includes ready to use libraries, tutorial, 
reference manual, demo, sample, and example 
programs, and quick reference card For IBM PC 
and compatibles. Specify Microsoft, Lattice, 
Computer Innovations, Aztec, Mark Williams, 
Wizard, DeSmet, or Datalight C compiler AND 
compiler version number when ordering. 

VitaminCSource ... FREE* 

•Free with purchase of Vitamin C 

VCScreen.$99.95 

Requires Vitamin C and IBM PC/XT/AT or 
true compatible. 


ALL ORDERS: 

SHIPPING: $3 ground, $6 2-day air, $20 
overnight, $30 overseas. Visa and Master Card 
accepted. All funds must be U.S. dollars drawn 
on a U.S. Bank. Texas residents add 7V\% sales 
tax. 


For Orders or More information, Call... 


( 214 ) 245-6090 















UPDATE 



JE 

SE2 


; TRY AGAIN IF BUSY 


OR 

AH, AH 


; CHECK FOR ERROR 


JNZ 

SENO 


; JUMP ON ERROR 


MOV 

EMMBASE, BX 


; SAVE THE BASE 

SE3: 

MOV 

AH, 42H 


; FUNCTION 3: 


INT 

67H 


; GET NUMBER OF PAGES 


CMP 

AH, 82H 


; CHECK FOR BUSY 


JE 

SE3 


; TRY AGAIN IF BUSY 


OR 

AH, AH 


; CHECK FOR ERROR 


JNZ 

SENO 


; JUMP ON ERROR 


OR 

BX, BX 


; CHECK UNALLOCATED PAGES 


JZ 

SENO 


; JUMP IF NONE AVAILABLE 

SE4: 

MOV 

AH, 43H 


; FUNCTION 4: 


MOV 

BX, 1 


; ALLOCATE ONE PAGE 


INT 

67H 




CMP 

AH, 82H 


; CHECK FOR BUSY 


JE 

SE4 


; TRY AGAIN IF BUSY 


OR 

AH, AH 


; CHECK FOR ERROR 


JNZ 

SENO 


; JUMP ON ERROR 


MOV 

PID, DX 


; SAVE THE PROCESS ID 

SE5: 

MOV 

AH, 44H 


; FUNCTION 5: 


XOR 

BX, BX 


; MAP THE PAGE TO 


XOR 

AL, AL 


; FRAME BASE 


INT 

67H 




CMP 

AH, 82H 


; CHECK FOR BUSY 


JE 

SE5 


; TRY AGAIN IF BUSY 


OR 

AH, AH 


; CHECK FOR ERROR 


JNZ 

SENC 


; JUMP ON ERROR 


XOR 

AX, AX 




POP 

DI 


; RESTORE REGISTERS 


POP 

SI 




POP 

ES 




POP 

BP 




RET 



; RETURN 0 

SENC: 

MOV 

AH, 45H 


; FUNCTION 6: 


INT 

67H 


; CLOSE EMM 


CMP 

AH, 82H 


; CHECK FOR BUSY 


JE 

SENC 


; TRY AGAIN IF BUSY 

SENO: 

MOV 

AX, OFFFFH 




POP 

DI 


; RESTORE REGISTERS 


POP 

SI 




POP 

ES 




POP 

BP 




RET 



; RETURN -1 


SETUP 

EMM 

ENDP 




***************************************************************, 




_FINISH_EMM 






CLOSE 

THE EMM DEVICE 

RELEASE 

THE PAGE 



*************************************************************** , 




PUBLIC _FINISH_EMM 


. 

FINISH 

_EMM 

PROC NEAR 




PUSH 

BP 


; SAVE REGISTERS 


PUSH 

ES 




PUSH 

SI 




PUSH 

DI 



SE6: 

MOV 

AH, 45H 


; FUNCTION 6: 


MOV 

DX, PID 


; CLOSE EMM 


INT 

67H 




CMP 

AH, 82H 


; CHECK FOR BUSY 


JE 

SE6 


; TRY AGAIN IF BUSY 


POP 

DI 


; RESTORE REGISTERS 


POP 

SI 




POP 

ES 




POP 

BP 




RET 



; RETURN 


FINISH 

_EMM 

ENDP 




***************************************************************. 




SETUP_ 

TIMER 






SET UP 

THE TIMER FOR 

MAXIMUM 

COUNT, TO TIME A RUN 



*************************************************************** . 


SETUP_TIMER 

PROC NEAR 




PUSH 

AX 


; SAVE AX 


IN 

AL, PPI_PORT 


; STOP THE TIMER 


AND 

AL, OFCH 




OUT 

PPI_PORT, AL 




MOV 

AL, 0B4H 


; INITIALIZE THE TIMER 


OUT 

TIMER_CTRL, AL 



MOV 

AL, 0 


; CLEAR THE COUNT 


OUT 

TIMER2_PORT, 

AL 



NOP 





POP 

DS 


; RESTORE DS 

POP 

BP 


; RESTORE BP 

RET 



; RETURN 


WEMMTIME 

ENDP 




***************************************************************• 



_DEMMTIME 





TIME EXECUTION OF REP MOVSW 

INSTRUCTION 



**************************************************************** 



PUBLIC _DEMMTIME 


. 

DEMMTIME 

PROC NEAR 



PUSH 

BP 


; SAVE FRAME 

MOV 

BP, SP 



PUSH 

DS 


; SAVE DS 

PUSH 

ES 


; SAVE ES 

PUSH 

SI 


; SAVE SI 

PUSH 

DI 


; SAVE DI 

CALL 

SETUP_TIMER 


; SET UP TIMER 

DB 

066H 


; 32 BIT OPERANDS: 

XOR 

DI, DI 


; CLEAR EDI 

DB 

066H 


; 32 BIT OPERANDS: 

XOR 

SI, SI 


; CLEAR ESI 

DB 

066H 


; 32 BIT OPERANDS: 

XOR 

CX, CX 


; CLEAR ECX 

MOV 

DI, EMMBASE 


; SET UP EMM BASE ADDRESS 

MOV 

ES, DI 



MOV 

DS, DI 



XOR 

DI, DI 


; ES:DI •> TEST SEGMENT 

XOR 

SI, SI 


; DS:SI -> TEST SEGMENT 

MOV 

CX, [BP+4] 


; GET COUNT ARGUMENT 

IN 

AL, PPI_PORT 


; GET CURRENT CONTROL 

MOV 

BL, AL 


; SAVE IN BL 

OR 

AX, 1 


; SET TIMER ENABLE BIT 

CL I 



; STOP INTERRUPTS 

CLD 



; SET FORWARD DIRECTION 

OUT 

PPI_PORT, AL 


; ENABLE TIMER 

DB 

066H 


; 32 BIT OPERANDS: 

REP MOVSW 


; RUN TEST 

MOV 

AL, BL 


; RESTORE CONTROL VALUE 

OUT 

PPI_PORT, AL 



ST I 



; START INTERRUPTS 

CALL 

GET_TIMER 


; OBTAIN FINAL COUNT 

POP 

DI 


; RESTORE DI 

POP 

SI 


; RESTORE SI 

POP 

ES 


; RESTORE ES 

POP 

DS 


; RESTORE DS 

POP 

BP 


; RESTORE BP 

RET 



; RETURN 


DEMMTIME 

ENDP 




.*************************************************************** 



_SETUP_ 

.EMM 





SET UP 

EXPANDED MEMORY 

AND 

RETURN THE BASE 



.*************************************************************** 



PUBLIC _SETUP_ 

.EMM 



SETUP EMM 

PROC NEAR 



PUSH 

BP 


; SAVE REGISTERS 

PUSH 

ES 



PUSH 

SI 



PUSH 

DI 



MOV 

AH, 35H 


; GET EMM INTERRUPT 

MOV 

AL, 67H 


; VECTOR 

INT 

21H 



MOV 

AX, ES 


; CHECK FOR VALID BASE 

MOV 

BX, CS 


; MUST BE BELOW CS 

CMP 

AX, BX 



JA 

SENO 


; JUMP IF NOT GOOD 

MOV 

DI, 000AH 


; OFFSET OF DRIVER NAME 

LEA 

SI, EMM_NAME 


; COMPARE STRING 

MOV 

CX, 8 


; LENGTH OF STRING 

CLD 




REPE 

CMPSB 


; COMPARE THE NAME 

JNE 

SENO 


; JUMP IF NO GOOD 

SE1: MOV 

AH, 40H 


; FUNCTION 1: 

INT 

67H 


; GET MANAGER STATUS 

CMP 

AH, 82H 


; CHECK FOR BUSY 

JE 

SE1 


; TRY AGAIN IF BUSY 

OR 

AH, AH 


; CHECK FOR ERROR 

JNZ 

SENO 


; JUMP ON ERROR 

SE2: MOV 

AH, 41H 


; FUNCTION 2: 

INT 

67H 


; GET PAGE FRAME BASE 

CMP 

AH, 82H 


; CHECK FOR BUSY 


MARCH 1987 


87 
















UPDATE 



TIMER2_P0RT, AL 


RESTORE AX 
RETURN 


SETUP TIMER 


TAKE THE COUNT FROM THE TIMER 


SAVE REGISTERS 
GET LOW BYTE OF TIME 


AL, TIMER2 PORT 


AL, TIMER2_PORT 


GET HIGH BYTE 
TIME IN AX 

CORRECT FOR COUNT-DOWN 


XCHG AL, AH 


RESTORE REGISTERS 
RETURN 


GET TIMER 


_NDP_PRESENT 

CHECK IF 80287 IS PRESENT 


PUBLIC _NDP_PRESENT 
NDP_PRESENT PROC NEAR 


PUSH BP 

MOV BP, SP 


SAVE FRAME 


BIOS EQUIP CHECK 


IS 80287 BIT SET? 
NO MEANS NO 80287 
RETURN TRUE 


JMP NDPEXIT 

XOR AX,AX 


ALL DONE 

SET AX TO FALSE 

RESTORE SP 


NDPEXIT:MOV 


RESTORE BP 
RETURN 


NDP PRESENT ENDP 


_CPU_TYPE 

CHECK IF CPU IS 8088/8086, 80188/80186, 80286, 80386 


.***************************************************************. 



PUBLIC _CPU_TYPE 


_CPU_ 

TYPE 

PROC NEAR 



PUSH 

BP 

SAVE FRAME 


MOV 

03 

CO 

"U 



PUSHF 




XOR 

AX, AX 

ZERO AX 


PUSH 

AX 



POPF 


TRY TO PUT 0 INTO FLAGS 


PUSHF 




POP 

AX 

SEE WHAT WENT IN FLAGS 


AND 

AX,OFOOOH 

MASK OFF HIGH FLAG BITS 


CMP 

AX,OFOOOH 

WAS HIGH NIBBLE ONES 


JE 

_8X 

IS 8086 OR 8088 


PUSH 

SP 

SEE IF SP IS UPDATED 


POP 

BX 

BEFORE OR AFTER IT IS 


CMP 

BX, SP 

PUSHED 


JNE 

_18X 



MOV 

AX,OFOOOH 

TRY TO SET HIGH BITS 


PUSH 

AX 



POPF 


IN THE FLAGS 


PUSHF 




POP 

AX 

LOOK AT ACTUAL FLAGS 


AND 

AX,OFOOOH 

ANY HIGH BITS SET? 


JE 

_286 

IS 80286 

_386: 

MOV 

AX, 03 

IS AN 80386 


JMP 

CTEXIT 


_286: 

MOV 

AX, 02 

IS AN 80286 


JMP 

CTEXIT 


_18X: 

MOV 

AX,01 

IS AN 80188/80186 


JMP 

CTEXIT 


_8X: 

MOV 

AX, 00 

IS AN 8088/8086 

CTEXIT: POPF 


RESTORE ORIGINAL FLAGS 


MOV 

SP, BP 

RESTORE SP 


POP 

BP 

RESTORE BP 


RET 


RETURN 

CPU 

TYPE 

ENDP 


_TEXT 


ENDS 




END 




Cross Compile, 
68000 / 08 / 10/20 


Features: 

■ Full, Standard C 

■ Easy to Use Compiler Options 

■ Complete User Documentation 

■ Global Code Optimization 

■ Optional Register Allocation 
Via Coloring 

■ ROMable and Reentrant Code 

■ Comprehensive Royalty Free 
Run-time Library 

■ Floating Point Library Routines 

■ Intermix MCC68K C with 
ASM68K Assembly Language or 
Microtec PAS68K Pascal 

■ Optional Assembly Language 
Listing Intermixed with MCC68K 
C Source Line Number 

■ Symbolic Debug Capability 


The Microtec MCC68K C Cross Compiler 
is a complete implementation of the 
‘C’programming language as de¬ 
fined in The C Programming 
Language by Kernighan and 
Ritchie with extensions. 

MCC68K emits highly optimized 
assembly language code lor 
the Microtec ASM68K 
Motorola compatible 
assembler. 

The Microtec MCC68K A 

package includes the 
compiler, relocatable 
macro assembler, 
linking loader, 
run-time li¬ 
brary, and 
compre¬ 
hensive 

A 

guide. 


Host computers include: DEC VAX, DG MV- 
Series, Apollo, IBM PC and PC-compatibles.. 

We're Functional and Fast and Serious 
about our products. We've been providing 
flexible and economical solutions for soft¬ 
ware developers since 1974. 

Beginning with product concept, through 
development, quality assurance, andpost¬ 
sales support - Quality, Compatioility 
and Service are the differences which set 
Microtec Research apart from others. 

If you're a serious software developer, shop¬ 
ping for software development tools, call or 
write today for more information: 

800 - 551 - 5554 , 

In CA call (408) 733-2919. 


3930 Freedom Circle, Suite 101, Santa Clara, CA 95054 
Mailing Address: PO. Box 60337, Sunnyvale, CA 94088 

W//A MICROTEC ® 

M I RESEARCH 















Unretouched frozen video image in 
full color. Captured with ATronics’ 
Professional Image Board. 


Professional 

Image 

Board 


The new Professional Image Board is a PC 
board which allows an ordinary home video 
camera (color or black-and-white) to be 
plugged into an IBM personal computer or IBM 
compatible. Now, live, fast action scenes can be 
instantly captured in full color and frozen. The 
frozen pictures can be computer enhanced 
feature by feature and stored on a floppy or 
hard disk. The frozen pictures can also be 
transmitted to any remote computer in the 
world via modem. The Professional Image 
Board also allows you to perform cut and 
paste operations with most popular software. 


SPECIFICATIONS 


• Works with IBM PC/XT/AT or compatible 

• Capture one picture in 1/60 second from 
standard NTSC signal source (Regular video 
camera, VCR, etc., or RGB camera) 

• Shows picture on analog monitor or TV 

• Resolution 512 x 256 capable of 32K 
different colors 

• Adding text on the captured picture 

• Mixing external image with internal image in 
live mode 

• Image captured by PIB can be displayed on 
EGA monitor 

• Adapter available for European standard TV 


ATI 


ATronics 

International Inc. 

"Delcavi rfeluaMeeci r 7ee^Moi»^ 


1830 McCandless Dr. Milpitas CA 95035 

(408) 943-6629 


CIRCLE NO. 238 ON READER SERVICE CARD 










PHOTOGRAPH*WALTERI ARRIMORE/BIAKF.Sl.EE-L\NE 



T raditionally, PC software devel¬ 
opers have not had many choices 
for debugging their high-level lan¬ 
guage programs. Most debuggers work 
in assembly language code; the pro¬ 
grammer must be familiar with intricate 
details of how the compiler generates 
code in order to debug programs suc¬ 
cessfully. Commands are given to the 
debugger through a command line 
using cryptic incantations. In an age of 
mice, pull-down menus, and windows, 
most debuggers are throwbacks to the 
days of DOS 1.0. 

CodeView is Microsoft Corpora¬ 
tions attempt to advance the state of 
the art in debuggers. CodeView pro¬ 
vides debugging at both the source and 
assembly language levels. For users 
who are familiar with assembly-level 
assistance, CodeView is compatible with 
both Microsoft’s DEBUG and SYMDEB 
line-oriented debuggers. For high-level 
language programmers, CodeView 
allows almost complete debugging at 
the source-code level. 

Assembly-level debuggers such as 
DEBUG always work at tine level of 
machine instructions (either hexadeci¬ 
mal or assembly language mnemonics) 
and memory locations. Although appro¬ 
priate for programs written in assembly 
language, DEBUG is not well suited to 
higher-level languages. The original 
structure of the program is obscured by 
compilation; at best, the compiler may 


produce a listing that shows the assem¬ 
bly language code generated from the 
source. In this case, the programmer 
must understand not only the source- 
level program but also the resulting as¬ 
sembly language code that is produced 
by the compiler. 

SYMDEB, currently provided by 
Microsoft with its Macro Assembler ver¬ 
sion 4.0, extends the capabilities of 
DEBUG by adding limited support for 
debugging at the source-code level. The 
programmer can step through one 
source-code line at a time. Symbols for 
function names and global data can be 
used instead of absolute memory ad¬ 
dresses. However, the debugger does 
not know the size or type of data desig¬ 
nated by the symbol; the programmer 
must provide that information. 

CodeView also allows debugging at 
the source-code level, but instead of 
examining bytes or words in memory, 
the programmer can examine variables 
as their program-defined types: integers, 
floats, strings, and structure members. 
Instead of stopping on an assembly lan¬ 
guage instruction, the programmer can 
stop on source lines. Both global and 
local variables may be examined, Code¬ 
View' knows the size and structure of 
variables in the program. 

Often, an assembly-level debugger 
is not necessary for application pro¬ 
gramming. Even for systems program¬ 
ming done in C, source-level debugging 


Window-oriented 
CodeView heralds a 
new generation of 
products with full 
debugging capabilities 
at both the source code 
and assembly levels. 









CODEVIEW 


PHOTO 1: CodeView Screen Layout 


File Search View Run Watch Options Calls Trace? Go? 


■ : • ~ ] entab.c }= 

0) colpos > 88 : 0 

1) *p_ch : 0 


2 ) 8888:0190 88 08 88 88 08 88 08 

80 68 80 . 

93: 

ini colpos: 

/* current column position *S 

94: 

int ch: 

/» current character */ 

95: 

char *p ch: 

/* current char and pointer to it «/ 

96: 

register char «p space; 

/* start of current whitespace */ 

9?: 

char buf[HAXTABS+21; 

/* buffer for text betueen tabstops * 

28: 



99: 

colpos = l; 


100: 

p ch = sbufiei; 


101 : 

P space - NULL; 


102: 



103: 

while ( (ch = getc(fp)) 

♦= EOF ) f 

184: 

*P_ch+ + = ch; 

/* add to line buffer *S 

105: 



106: 

/* Renenber spaces 

in case there is a run of then */ 

>up? colpos > 88 


>u? *p ch 
H P 0:408 

10 



The major components of the CodeView screen in window 
mode are, from top to bottom, the menu bar, the watch 
window, the display window, and the dialog window. 


PHOTO 2: Mixed Source/Assembly Listing 



0EE 


entab.exe 

==='■=*”===- ■■■ ~ --=j eiltab.C ! | ~ ' ' ~ f 

0) colpos > 88 : 8 

1) *p ch 0 iWliIfft:)! 

2) 4275:0F84 00 08 00 00 88 08 08 80 00 '— 

AX = 8F84 

BX -* 8F84 

CX = 81A8 
n¥ - hot? 

1083:01A9 56 

PUSH 

SI 


vA - uOLZ 

ft SP - 8F88 

99: colpos = l; 




3? = 1806 

4883:01/*) C746F88180 

HW 

Word Ptr [colpos],0081 

;BR8 

SI = 1020 

108: P ch = abuf[03; 



DI = 10EE 

4083:01AF 3D867EFF 

LEA 

AX,Uord Ptr [BP-08821 


DS = 4275 

4083:81B3 8946FE 

H0U 

Uord Ptr [p_chl,AX 


ES = 4275 

181: p_space - NULL; 



SS = 4275 

4883:01B6 BE0880 

H0U 

P_space,8800 


K CS - 4883 

103: while ( (ch 

= getc(fp)) ?= EOF ) { 


IP = 81B6 

4083:0189 8B5E84 

M0U 

BX,Uord Ptr [fpl 


: novrflow 

4083:01BC FF4F02 

DEC 

Uord Ptr [BX*821 


up 

4883:01BF 837F8280 

CttP 

Uord Ptr [BX*82L*00 


fl enable 

i pos i tiyc 

>up? colpos > 88 




[j not zero 

>u? «p ch 




no auxcy 

H P 0:488 1 10 




odd 

>y2 




no carry 

>tpb buf 1 10 
> 






For more detailed debugging, a mixed source and assembly 
listing may be used instead of straight source code. The 
watch window displays the active trace and watchpoints. 


is possible. CodeView hides the assem¬ 
bly language details in most cases. 

The CodeView debugger is distrib¬ 
uted as part of Microsoft’s C version 4.0 
and FORTRAN version 4.0, and supports 
all memory models. It is not available 
separately. Microsoft C and FORTRAN 
are the only languages that currently 
support the extended debugging infor¬ 
mation required for CodeView. This 
review was done with CodeView and 
the Microsoft C compiler. 

The Microsoft C compiler is fully 
compatible with the Kernighan and 
Ritchie standard. It provides five mem¬ 
ory models and includes numerous li¬ 
brary routines. It supports mixed lan¬ 
guage programming among other Mi¬ 
crosoft language implementations and 
contains a built-in optimizer. (Version 
3.0 of the Microsoft C compiler was re¬ 
viewed in “The State of C,” William J. 
Hunt, January 1986, p. 82.) 

To use CodeView, a user adds two 
switches in the compiler invocation: 

MSC filename.c /Zi /Od ;;; 

where the /Zi switch has the compiler 
include additional symbol, line number, 
and debugging information for the 
linker, and the /Od switch turns off op¬ 
timization. (Including optimization re¬ 
moves the correlation between source- 
code lines and object-code lines.) 

After compiling, linking is invoked 
using the CodeView option: 

LINK /CO filename ;;; 

It is very important to use the version 
of LINK that is provided with the Micro¬ 
soft C compiler, because previous ver¬ 
sions do not comprehend the /CO 
(CodeView) option. 


This link creates a .EXE file with 
the requisite debugging information. 

The .EXE file also executes without the 
debugger present. Because the default 
level of optimization is disabled by the 
/Od option, the resulting .EXE file may 
be larger and run more slowly than a 
nondebugging version of the file. The 
debugging information included in the 
.EXE file for CodeView’s use also in¬ 
creases the size of the .EXE file. 

The .EXE file header reveals to 
CodeView the presence of debugging 
information. This header is not present 
in .COM files, so the source-level 
debugging option is not available for 
them. However, .COM files can be 
debugged using assembly-level com¬ 
mands. Similarly, a .EXE file compiled 
or linked without the options that are 
shown above will lack information for 
source-level debugging; however, Code¬ 
View can still be used. 

Unfortunately, CodeView cannot be 
used to debug Microsoft Windows pro¬ 
grams. The version of SYMDEB that is 
provided with the Microsoft Windows 
Software Development Kit should be 
kept for this purpose. Considering the 
size of both CodeView and Windows, 
memory limitations probably would 
prohibit use of CodeView even if it 
were available. Approximately 200KB of 
memory was required to debug a 100- 
line program with CodeView. 

LAYOUT OF THE SCREEN 

CodeView can be used in either of two 
modes. The first is SYMDEB-compatible 
sequential interface. At a prompt, the 
user types in a command, and the out¬ 
put is shown on the lines that follow. 
This mode would normally be used 


only for a non-supported display or a 
non-IBM-compatible, MS-DOS comput¬ 
er. In the second mode, window mode, 
CodeView displays several windows of 
information at once. Photo 1 shows the 
layout of the CodeView screen in win¬ 
dow mode. The top of the screen is 
reserved for the menu bar. 

Below the menu bar is an area 
called the watch window , which dis¬ 
plays the current values of selected vari¬ 
ables or expressions. If no values are 
being watched (for example, whenever 
CodeView is started), this window is not 
present on the screen. 

The display window , an area used 
for the source code, appears below the 
watch window (or menu bar if no 
watch window is present at the time). 
This area is also used for the assembly 
language code or another text file. Pho¬ 
to 2 shows the display window with the 
assembly code option selected. 

At the bottom is the dialog win¬ 
dow. Dialog commands, which are a 
superset of SYMDEB commands, are en¬ 
tered in this window, and CodeView’s 
responses for some queries are given 
here. This area by default is small. 
CodeView retains a buffer of previous 
requests and responses in the dialog 
window through which the user can 
scroll. The sizes of the display and dia¬ 
log windows can be changed easily. 

To the right side of the screen is 
an optional vertical register window. 
Showing the registers and flags, it can 
be opened or closed with a keystroke. 
Assembly-level debugging, shown in 
photo 2, illustrates the layout of the 
register window. When debugging at 
source level, the register window is 
usually not needed. 


92 


PC TECH JOURNAL 




















DAN BRICKLMS DEMO P ROGRAM 
HAS EVERYONE TALKING. 


1 -**9ht VV,r,ner 


Dan Bricklin’s Demo Program is a new concept in prototyping 
and demo-making. With DEMO you can conceptualize programs, 
describe them to others, refine their functionality and 
human interface, and finally, teach users the finished 
product. The two most common applications are to 
prototype a product before it is written and to 
produce a demonstration or tutorial about an OF THE 


st arti 


put of 


th G 




Vaov* 


existing product or system. 

■ Create, edit and view a series of slides 

■ Each slide is 80x25 characters 

■ All 256 characters supported, including special characters 

■ All 256 attributes (color, underline, blink, etc.) 

■ Each slide can be the image of what a 
running program looks like 

■ Characters graphics only, no bit-mapped 
graphics 

■ Slides are stored compacted, allowing often 
hundreds and hundreds of slides to fit in 
memory for instant access (given enough RAM) 

■ Complete set of editing commands, 
including cut, paste and move 

■ Line, box and special character commands 
built-in 

■ Includes background “CAPTURE" program 
for importing screens from running programs 

■ Learn-mode macro facility 

■ Run command switches from slide to slide 
under automatic control 
Options include: 

□ Adjustable delay between each slide 

□ Wait for key or optional timeout 

□ Display different slide next depending 
upon keystroke 

□ Produce tones 

□ Switch to another set of slides in 
another file 

■ Runtime-only version of program included, 
along with license to make up to 50 copies 
(see License for details). 

■ Additional volume runtime licenses available. 

■ Requires 256k IBM PC/compatible, DOS 2.0 
or later. Supports Monochrome, Color/graphics, 
and EGA Adaptors (text mode only). 

Thousands of developers are designing 
better products faster and producing more 
effective demonstrations using Dan Bricklin's 
Demo Program. You can, too. Act now! 

ORDER YOUR COPY TODAY 
** ONLY $74.95 
^ 617-332-2240 

Send check to Software Garden, Inc. 

Dept. TD, P.O. Box 373, Newton Highlands, 

MA 02161. Massachusetts residents add $3.75. 
Outside the U.S.A. add $15.00. 


-PCiecvU° uT ' 


>o y °“ “se 
Vou’n . ° nc e, 
how yT° nd er 



“EverV^Jcot 

software ap p\v 



copy 


Pe 


Soft* 



“1W W" 




$s$ 




"Apparently has a 
hit on its hands with .. • 

a development tool 

for personal computer 
software that has won 
rave reviews from 


early usersr 

—Coroputerworid, 4/7/86 




SOFTWARE 

GARDEN 


Jl 


“h 

_ pC \Nee>> 


CIRCLE NO. 142 ON READER SERVICE CARD 



CODEVIEW 

SEEING CODEVIEW 

CodeView was tested on an AT with a 
Hercules Graphics Card, an AT with an 
IBM Enhanced Graphics Adapter (EGA), 
and an AT&T PC6300 with an AT&T ad¬ 
apter compatible with the IBM Color 
Graphics Adapter (CGA) and mono¬ 
chrome display. Both AT configurations 
were run under DOS 3.1, and the 
PC6300 with AT&T’s MS-DOS 2.11. 

On the ATs, CodeView recognized 
that DOS was being used and automati¬ 
cally entered the window mode when it 
was started On the PC6300, the /W 
(window) and /B (black-and-white dis¬ 
play) options had to be used to start 
CodeView in window mode. 

Screen output is a difficult area for 
debuggers such as CodeView. When the 
program being debugged is not run¬ 
ning, CodeView uses the entire screen 
to display debugging information. 
Whenever the program being debugged 
is started, a separate screen environ¬ 
ment is provided for it. When the de¬ 
bugger resumes control (such as after a 
breakpoint), the program’s screen is 
saved so that CodeView can reclaim the 
screen for debugging use. 

If all of the application’s screen 
output were done through the BIOS, 
CodeView could detea a BIOS video 
call (INT 10H) and restore the pro¬ 
gram’s screen only when needed. In 
reality, many programs write direaly to 
display adapter memory, avoiding the 
BIOS. CodeView could check every 
instruction for writes to display mem¬ 
ory, but this would significandy slow 
program execution. 

Instead, CodeView provides a good 
seleaion of compromises for handling 
screen output. On a monochrome 
adapter or an EGA/CGA program that 
changes display modes (for example, a 
graphics program), CodeView maintains 
a buffer of each screen in memory. 
Whenever the program is run, its 
screen is copied from the buffer into 
display memory. When CodeView takes 
control again, the screen is saved back 
into the buffer, and the CodeView 
screen is copied into display memory. 
This procedure causes the display to 
jump back and forth between the appli¬ 
cation and CodeView screen in a dis¬ 
concerting manner. 

With the CGA and EGA, CodeView 
uses two display pages in the video 
adapter memory: one for itself and the 
other for the program output. It flips 
between the two pages whenever the 
program is started, producing a much 
smoother transition between screens. 
The EGA also can be used in 43-line 
mode. The greater number of lines on 


the debugging screen in 43-line mode 
is helpful, but the annoying jumping be¬ 
tween the CodeView screen and a 24- 
by-80 program screen becomes even 
more pronounced. 

If a program is being debugged in 
a section of code where screen output 
is not being performed, the program¬ 
mer can have CodeView disable the an¬ 
noying screen-swapping that occurs 
during program execution. If it is care¬ 
fully used, disabling screen-swapping 
can make CodeView much easier to 
work with. However, if the program 
does write directly to the screen, the 
output either overwrites part of Code- 
View’s display or it disappears as Code¬ 
View updates its display. 

The best option for debugging is 
one that is not mentioned in the Micro¬ 
soft manual: using two displays. A Code¬ 
View command line switch, /2, places 

Mo, commands can be 
executed by selecting from 
the pull-down menu bar, 
pressing function keys, or by 
typing the commands. 


program output on the default display 
(seleaed by the DOS MODE com¬ 
mand), and CodeView’s output appears 
on the second display. Information - 
about this feature is contained in the 
README.DOC file supplied on disk, 
rather than in the documentation. 

USING CODEVIEW 

CodeView is started with the command: 

CV options executablefile arguments 

Options are provided to selea window 
mode, sequential mode, black-and-white 
display, screen flipping and/or swap¬ 
ping, or IBM EGA 43-line mode. One 
useful option allows a sequence of 
commands to be executed when Code¬ 
View is started. 

The name of the executable file to 
be debugged (including the .COM or 
.EXE extension) is given after any op¬ 
tions. If the program expects any com¬ 
mand-line arguments, they can be given 
after the executable file name. 

Typically, the executable file is 
debugged in the same direaory in 
which the source files reside. If Code¬ 
View cannot find the source files used 
to create the executable file, it prompts 


for the file’s location. If a source file is 
not available, only assembly language 
debugging can be performed. 

Every user should be able to find a 
comfortable interface with CodeView. 
Most commands can be executed by 
selecting from the pull-down menu bar, 
pressing function keys, or typing com¬ 
mands in the dialog window. Menu 
seleaions can be made with a Micro¬ 
soft-compatible mouse or by using Alt- 
key combinations. 

A mouse is used just as it is in 
Microsoft Windows. Items in the menu 
are selected by pointing to the main 
menu item, pressing a mouse button, 
and moving the selection bar to the de¬ 
sired item. Releasing the mouse button 
causes the selection to be made. The 
display and dialog windows have scroll 
bars that can be used to scroll through 
the source/assembly language listing or 
through previously entered dialog com¬ 
mands. The display/dialog separator line 
can be moved by the mouse to adjust 
the relative sizes of the two windows. 
The mouse also can be used to change 
any flag in the register window. 

Microsoft has provided a new 
MOUSE.SYS driver with CodeView that 
can save and restore the mouse cursor, 
so that both CodeView and the program 
being debugged can use the mouse. 
Unfortunately, CodeView may cause 
problems for mice that do not use the 
Microsoft driver. Logitech Inc.’s latest 
Logimouse software has been made 
compatible. At the time of this review, 
however, Mouse Systems Corporation 
did not have PC Mouse software that 
worked with CodeView. 

For keyboard use, the menu items 
have been named so that pressing the 
Alt key plus the first letter in the name 
will open the menu. Pressing the Alt 
key plus the first letter of the item in 
the opened menu will select that item. 
Commonly used commands are dupli¬ 
cated in the fimaion keys, which allow 
actions such as set/clear breakpoints, 
single-step, and “run until this instruc¬ 
tion is reached’’ to be performed with a 
single keystroke. 

The familiar SYMDEB command- 
driven interface is available through the 
dialog window. The major changes and 
additions made to the SYMDEB com¬ 
mands are listed below: 

• The E (enter) command, when typed 
with no arguments, executes the pro¬ 
gram in slow motion, highlighting 
each instruction as it is executed If 
watchpoints and/or registers are being 
displayed, they are also updated. 

• Commands have been added to ma¬ 
nipulate tracepoints and watchpoints. 


94 


PC TECH JOURNAL 



• The 7 command can be used to dis¬ 
play detailed information about the 
8087 or 80287 numeric coprocessor 
registers and internal state. 

• In many of the commands that re¬ 
quire values, a C-style expression of¬ 
ten can be used. The expression can 
include program variables, register 
names, and constants. 

• In keeping with the high-level debug¬ 
ging nature of CodeView, the default 
base for constants is 10. For hexadeci¬ 
mal constants, the C convention of 
preceding the number with Ox should 
be used. Alternatively, the default base 
for constants can be changed to 16 
with the N (numeric radix) command. 

• The W (write) command of DEBUG 
and SYMDEB is not supported. 

DEBUG or SYMDEB must be used for 
modifying executable files or patching 
absolute disk addresses. 

• The S (Search) command is not sup¬ 
ported by CodeView. 

EXECUTING CODE 

Program execution begins with a func¬ 
tion key, menu, or dialog command and 
stops whenever a breakpoint, watch- 
point, or tracepoint is encountered. The 
user can specify that the execution be 
done in slow motion or that it stop on 
the current cursor line (a temporary 
breakpoint). The current line of code 
being executed is identified by reverse 
video highlighting. 

The Trace command lets the user 
step through the program one or more 
lines at a time. It steps into C functions 
for which there is source code, if the 
display window contains C code. If 
CodeView is at the assembly level, the 
Trace command moves into any func¬ 
tion or interrupt except a DOS inter¬ 
rupt 21. CodeView moves through a 
macro’s expansion only at the assembly 
level, and die source line expansion is 
not available. After each step, all watch 
expressions are updated. 

The Program Step command, does 
not enter C or assembly language pro¬ 
cedures. While it is similar to the Trace 
command, it steps over the called pro¬ 
cedure to the next source line in the 
current procedure. 

Once entered, a procedure must 
be stepped through or a breakpoint 
must be set in the calling procedure. 
This can be done by making use of the 
Call Stack command. 

If the program enters an endless 
loop or if a problem is encountered 
during execution, control can be re¬ 
gained through Ctrl-C or Ctrl-Break. If 
the program has reset these keys, Code¬ 
View can be stopped with the ATs Sys- 


Req key. CodeView does not abort; it 
gracefully returns control to the user. 

At any point, the program can be 
restarted, which starts execution from 
the beginning of the program, as if the 
debugger has just been entered. Break¬ 
point and watch expression definitions 
still are retained. 

Often while debugging, the user 
needs to know the calling sequence and 
parameters, as well as the relation 
among procedures, not just the proce¬ 
dures themselves. The calls menu or 
Stack Trace command shows the calling 
sequence to the present execution loca¬ 
tion. Photo 2 shows the CodeView 
screen with the calls menu pulled 
down. The menu is dynamic, showing 
the current function at the top and the 
calling procedures below. Main() is 
always the last function shown in the 
calls menu. The values of the parame¬ 
ters are also given in the menu. 

Unlike the other menus, the calls 
menu cannot be used by entering the 
combination of Alt key and the first let- 
: ter of the menu item. The user must 
| move the selection bar up or down the 
menu and then press the Enter key. 

This moves the cursor to the source 
code at the calling point (or the calling 
instruction if called from* assembly lan¬ 
guage). The calling parameter list can 
then be examined. If the uppermost 
menu item is selected, CodeView re¬ 
turns to the current position. 

SEARCHING CODE 

Examining code is a straightforward 
procedure in CodeView. The user is 
able to search through the code with 
the search menu or dialog commands 
or by using the cursor keys. 

The view menu or the F3 key 
allows the user to move from C to as¬ 
sembly language and back. The assem¬ 
bly language code is mixed code; the C 
source is contained in the assembler, 
where possible, as comment lines. 

Photo 2 shows the mixed source/assem¬ 
bly format. The C source comments can 
be turned off completely to get straight 
assembly language without symbolic 
references. When source code is not 
available, the user sees only assembly 
language instructions in the standard 
Unassemble format from DEBUG. This 
is true for all .COM files. 

The Search function lets the user 
find a variable, label, or expression in 
the code. After selecting the Find or 
Label menu item, a dialog box appears, 
and then the search string is specified 
by entering a regular expression. 

Regular expressions are standard in 
the UNIX environment; they form a 


comprehensive but enigmatic search 
language. Regular expressions can 
include wild cards and special search 
characters. An example might be 
"buffer, which searches for the word 
buffer at the beginning of a line. In the 
simplest case, a normal text string can 
be entered. To look for the occurrences 
of the C library function fopen(), the 
user can type fopen. However, to look 
for buffer[i], the user would need to 
know to enter buffer\[i]. Similarly, the 
* does not work quite the same way as 
at the DOS level. Regular expressions 
are very strong in their searching and 
matching capabilities, and their inclu¬ 
sion is quite useful. The CodeView 
manual includes an excellent appendix 
on regular expressions. 

Two types of searching can be per¬ 
formed with CodeView. The first is a 
text search that uses a regular expres¬ 
sion to find any string in the source file. 
Through menu selections, CodeView 
can perform a text search both forward 
and backward in the source file. With a 
dialog command, only forward searches 
are possible. Oddly, the search-back¬ 
ward menu selection does not allow a 
search string to be entered; it uses the 
string entered for the last forward- 
search command. Because searching 
wraps around to the top of the file (in¬ 
stead of giving a “not found” message), 
a search-forward command may find an 
occurrence at an earlier line in the file. 
This mirrors the behavior of searches in 
UNIX-style editors, but may take some 
users by surprise. 

For example, a search for the 
string strcpy would find the first men¬ 
tion of strcpy in the source file starting 
from the cursor position, whether it is a 
function call, a comment, or a declara¬ 
tion. Subsequent searches will find later 
occurrences of strcpy, until the search 
wraps around to the first occurrence. 

The second form of search is a 
label search, which finds the definition 
of a function or label. The name given 
for the label must be complete and can¬ 
not be a regular expression. If a label 
has been defined in C, CodeView finds 
that location, changing source files if 
necessary. If, however, the label is de¬ 
fined in assembly language or in execu¬ 
table code, then CodeView changes to 
assembly language to display the code. 
For example, a search for strcpy as a 
label would move to the location of the 
C library routine, and the debugger 
would change to assembly level. 

Modifying code can be done only 
at the assembly level. The Assemble 
Dialog command assembles 8086-family 
mnemonics. Some programmers find 


MARCH 1987 


95 



CODEVIEW 

this command invaluable; they use it to 
jump to a patch area where they can 
enter temporary bug-fixing code. In¬ 
struction mnemonics for the 8087 and 
80287, however, are not supported by 
the in-line assembler. 

DATA EXAMINATION 

CodeView provides programmers with a 
familiar environment in which to exam¬ 
ine data using several methods. The 
first is the old DEBUG command for 
dumping memory. Entering dialog com¬ 
mands such as 

D DS:0xlF0 230 

produces a hexadecimal dump of that 
portion of memory. CodeView follows 
SYMDEB in having ASCII, integer, word, 
real, and several other types of dumps. 

Virtually all of the familiar SYMDEB 
commands have been included in 
CodeView—for example, the Display 
Expression dialog command. (This facil¬ 
ity is also available through the Evaluate 
menu item on the view menu.) The 
Display Expression command displays 
the value of a subset of C expressions. 
An expression includes constants, vari¬ 
ables, most C operators, and some type 
casts (structure or union type casts are 
not allowed). For example, the follow¬ 
ing command 

? global_var+5 

prints the value 13 in the dialog win¬ 
dow if global_var is currendy 10. 

At a simple level, the Display 
Expression command operates as a cal¬ 
culator. It is also possible to determine 
the address of a variable using the & 
operator. In addition, the result can be 
formatted in a manner similar to the 
printf statement. For example, the dia¬ 
log command, ? 100, x, asks for the 
value of 100 decimal in hexadecimal. 
The x asks that result be printed as a 
hexadecimal. All of the normal printf 
types are possible: decimal integer, hex, 
octal, float, exponential, string, charac¬ 
ter, and various longs. Most importandy, 
the value of a variable ccan be deter¬ 
mined in C notation with the Display 
Expression command. The expression 

? ptr — >member[index], d 

is perfecdy valid. Individual address cal¬ 
culations are unnecessary. 

Because the C assignment and 
increment operators are supported in 
expressions, display expression also can 
be used to modify data. This point is 
not well made in the manual. In fact, 
the manual does not refer to this useful 
feature in the chapter on modifying 
data. Although the E (enter) command 


of SYMDEB is also supported, the 
advantage of Display Expression for 
changing data is that the type and size 
of the data are known, whereas Enter 
requires the programmer to specify the 
type and size. 

The command ? varl = 5 sets 
varl to 5. In a similar manner, 

? stmctB.var2 + + 

increments the current value of var2 in 
structB. Display Expression does not al¬ 
low function calls to be executed. Be¬ 
cause C strings are supported by library 
function calls, rather than directly in the 
language, the only way to modify a 
string is to use the Enter command: 

E string_name “the rain” 

This creates a small inconsistency in the 
way data are modified. 

CodeView also has facilities for 
examining data through watch expres¬ 
sions. The ability to evaluate an expres¬ 
sion or variable whenever a breakpoint 
or tracepoint is reached is available 
through the watch menu or a dialog 
command. This evaluation occurs auto¬ 
matically whenever CodeView is active. 

Watch expressions are shown in 
the watch window directly below the 
menu bar, sharing the available screen 
space with the display window. There¬ 
fore, the more watch expressions that 
are used, the smaller the display win¬ 
dow. Four or five watch expressions are 
a reasonable number for a 25-line 
screen; the EGA’s 43-line mode is espe¬ 
cially helpful when several watch 
expressions need to be displayed. 

Limitations on the visibility of vari¬ 
able names in CodeView can make 
entering expressions somewhat awk¬ 
ward. Watch expressions for a proce¬ 
dure’s local variable cannot be entered 
until the procedure is called. In fact, at 
least one line of code in the procedure 
must be executed before any watch ex¬ 
pressions .can be entered. 

To know the value of a variable in 
a calling procedure, the user must pre¬ 
fix the variable name with the proce¬ 
dure name: 

W? procedure_ 1. variable_A 

If this is not done, CodeView does not 
know variable^A’s value within proce¬ 
dure^, even in a procedure that is 
called by procedure^ 1. As a matter of 
convenience, CodeView should allow 
the user to set the locality for variables 
. in the watch expression through the lo¬ 
cation of the cursor in the source. 
CodeView should also allow watch ex¬ 
pressions to be set for functions that 
have not been reached, so that a watch 


expression could be set up before de¬ 
bugging actually starts. 

BREAK, TRACE, AND WATCH 

Three facilities are provided to stop 
execution of a program whenever user- 
defined conditions occur: breakpoints, 
tracepoints, and watchpoints. Break¬ 
points are also found in DEBUG and 
SYMDEB. CodeView allows the user to 
set breakpoints visually with the F9 key, 
a mouse button, or a dialog command. 
The source line is then highlighted on 
the screen (see photo 1). 

As many as 20 breakpoints can be 
set simultaneously. They remain in 
force until they are canceled or until 
the programmer leaves the debugger. 
They are retained when the program is 
restarted. Breakpoints can be temporar¬ 
ily disabled and then reenabled. 

When the program is about to exe¬ 
cute a code statement that contains a 
breakpoint, CodeView stops, sets the 
display window to the appropriate point 
in the code, and updates any watch 
expressions. The user can then enter 
any CodeView commands. By appro¬ 
priately placing breakpoints and watch 
expressions, users easily can gain snap¬ 
shots of their programs. 

An additional feature of break¬ 
points is that, through the dialog com¬ 
mand, CodeView can stop at the wth 
iteration of a code line. The dialog 
command BP .211 75 causes CodeView 
to stop when line 211 is executed for 
the 75th time. This is ideal for stopping 
near the end of a loop’s execution. 
Through a dialog command, the user 
also can ask for the automatic execution 
of other commands when a breakpoint 
is triggered. For example, 

BP .1034 “? i; ? j = 4” 

prints out the value of i and resets j to 
4 every time the breakpoint is encoun¬ 
tered in the program. 

The second form of control is the 
tracepoint. It stops program execution 
whenever a memory location (or a 
range of memory up to 128 bytes) is 
modified. The expression defining the 
area of memory to be traced can be 
either a program variable name or a set 
of absolute memory addresses. Vari¬ 
ables and memory ranges being traced 
appear in the watch window. 

Watchpoints, the third and most 
powerful form of control, are expres¬ 
sions that are evaluated after every pro¬ 
gram instruction is executed. If the 
expression evaluates to any value ex¬ 
cept zero, the program is stopped. 
Watchpoints share the watch window 
with tracepoints and watch expressions. 


96 


PC TECH JOURNAL 



CODEVIEW 


Watch expressions display only the 
value of a variable, whereas watchpoints 
can cause the program to be stopped 
when their expressions are not zero. 
Watchpoints are shown in high-intensity 
text in the watch window to differen¬ 
tiate them from the similar-looking 
watch expressions. The combined total 
number of watchpoints, tracepoints, and 
watch expressions cannot exceed 10. 

The cost of these features is 
reduced execution speed of the pro¬ 
gram being debugged. Breakpoints are 
relatively inexpensive unless they are 
contained in a loop with a very high 
pass count. Tracepoints and watchpoints 
slow the program down by a factor of 
approximately 1,000. Depending on the 
program, this may be significant. Pro¬ 
grams that deal with external events 
(for example, serial ports, mice, or real¬ 
time clock interrupts) may not tolerate 
the delay. (CodeView can take advan¬ 
tage of debugging hardware that reduces 
the overhead of tracepoints and watch¬ 
points. Atron’s MiniProbe, an example of 
this kind of hardware, will be reviewed 
in an upcoming Product Watch.) 

POWERFUL FUNCTIONS 

Among CodeView’s features are com¬ 
mands to set tabs, reset register values, 
copy CodeView output to both file and 
screen, and pause. The shell menu item 
allows the execution of DOS commands 
and a second COMMAND.COM. 

One example of the power of the 
I/O redirection and pausing commands 
is the CodeView demonstration disk. 

The entire demonstration is orches¬ 
trated by using script files read in by 
CodeView. A script file is useful for 
quickly executing a program to the 
point where it was failing when it 
requires intermediate breakpoints and 
patches. All of the breakpoints and 
patches could be done in the script file. 

CodeView’s Load command loads 
ASCII files that contain no special for¬ 
matting characters. This is useful for 
viewing C header files that have been 
included by the source program. 

The on-line help screens are disap¬ 
pointing. Relatively little information is 
present; in general the screens serve as 
syntax reminders. For a complex prod¬ 
uct, CodeView offers very few screens. 

CodeView’s written documentation, 
with the exception of the Display 
Expression command, is good. The 
manual, which currently takes up one- 
half of one of the three Microsoft C 
manuals, includes sections on using the 
compiler and linker with CodeView, 
CodeView options, screen layout, and 
menus. In addition, each command has 


ISN’T IT A PITY, 




Everything Isn’t As 
Accommodating As 

TM TM 

c-tree / r-tree 


FILE HANDLER 


Performance and Portability 

For all the time you devote to developing 
your new programs, doesn't it make sense to 
insure they perform like lightning and can be 
ported with ease? 

c-tree: Multi-Key ISAM Functions 
For Single User, Network, & Multi 
Tasking Systems 

Based on the most advanced B+ Tree routines 
available today, c-tree gives you un¬ 
matched keyed file accessing performance and 
complete C Source Code. Thousands of profes¬ 
sional C programmers are already enjoying 
c-trees royalty-free benefits, outstanding 
performance, and unparalleled portability. 

Only FairOom provides single and multi-user 
capabilities in one source code package, 
including locking routines for Unix, Xenix, and 
DOS 3.1., for one low price! In addition, 
c-tree supports fixed and variable record 
length data files; fixed and variable length key 
values with key compression; multiple indices 
in a single index file; and automatic sharing of 
file descriptors. 

r-tree: Multi-File Report Generator 
r-tree builds on the power of c-tree 
to provide sophisticated, multi-line reports. 
Information spanning multiple files may be 
used for display purposes or to direct record 
selection. You can develop new reports or 
change existing reports without programming 
or recompiling and can use any text editor to 


REPORT GENERATOR 


create or modify r-tree report scripts 
including the complete report layout. At your 
option, end users may even modify the report 
scripts you provide. 

Unlimited Virtual Fields; Automatic File 
Traversal 

r-tree report scripts can define any number 
of virtual fields based on complex computational 
expressions involving application defined data 
objects and other virtual fields. In addition, 
r-tree automatically computes values 
based on the MAX, MIN, SUM, FRQ, or AVG of 
values spread over multiple records, r-tree 
even lets you nest these computational func¬ 
tions, causing files from different logical levels 
to be automatically traversed. 

Unlike other report generators, r-tree allows 
you to distribute executable code capable of 
producing new reports or changing existing 
reports without royalty payments, provided the 
code is tied to an application. Your complete 
source code also includes the report script 
interpreter and compiler. 

How To Order 

Put FairOom leadership in programmers utilities 
to work for you. Order c-tree today for 
$395 or r-tree for $295. (When ordered 
together, r-tree is only $255). For VISA, 
MasterCard and C.O.D. orders, call 314/445- 
6833. For c-tree benchmark comparisons, 
write FairOom, 2606 Johnson Drive, Columbia, 
MO 65203. 


O Complete C Source Code & No Royalties! 

Xenix is a registered trademark of Microsoft Corp. Unix is a registered trademark of AT&T. 

CIRCLE NO. 119 ON READER SERVICE CARD 


MARCH 1987 


97 



“How to protect your software 
by letting people copy it.” 

By Dick Erett, President of Software Security 


Hard Disk Installation : Simply copy program disk 
to hard disk usin g DOS Command- Copy A:*.* C: 

Program Back-ups : You may make as many copies of 
the program diskette as you wish. 


Data Back-ups : Use normal back-up and restore 
commands, including backing up sub-directories containing 
program files. 

Networks : This product may be 
*works. Follow the same installation 
on page 102 of this manual. The Block 
with the normal operation of any 



Soon all software installation procedures will be as straightforward as this. 
The only difference will be whether you include the option to steal your 
product or not. 


Inventor and 
entrepreneur, 
Dick Erett, 
explains his 
company’s 
view on the 
protection of intellectual 
property._ 

crucial point that 
even sophisticated 
software develop¬ 
ment companies and the 
trade press seem to be miss¬ 
ing or ignoring is this: 
Software protection must 
be understood to be a 
distinctively different 
concept from that com¬ 
monly referred to as 
copy protection. 
Fundamentally, software 
protection involves devising 
a method that prevents 
unauthorized use of a 
program, without restricting 
a legitimate user from 
making any number of 
additional copies or prevent¬ 
ing program operation via 
hard disk or LANs. 

Logic dictates that mag¬ 
netic media can no more 
protect itself from misuse 
than a padlock can lock itself. 

Software protection must 
reside outside the actual 
storage media. The technique 
can then be made as tamper 
proof as deemed necessary. 

If one is clever enough, 
patent law can be brought 
to bear on the method. 

Software protection is at 
a crossroads and the choices 
are clear. You can give 
product away to a segment 


of tne market, or take a 
stand against the theft of 
your intellectual property. 

.. giving your software 
away is fine ...” 

We strongly believe that 
giving your software away 
is fine, if you make the 
decision to do so. However, 
if the public’s sense of ethics 
is determining company 
policy, then you are no 
longer in control. 

We have patented a device 
that protects your software 
while allowing unlimited 
archival copies and unin¬ 
hibited use of hard disks and 
LANs. The name of this 
product is The BLOCKS 

The BLOCK is the only 
patented method we know 
of to protect your investment. 
It answers all the complaints 
of reasonable people con¬ 
cerning software protection. 


In reality, the only people 
who could object are those 
who would like the option 
of stealing your company’s 
product. 

“...eliminating the ratio¬ 
nale for copy-busting... 99 

Since The BLOCK allows 
a user to make unlimited 
archival copies the rationale 
for copy-busting programs 
is eliminated. 

The BLOCK is fully pro¬ 
tected by federal patent law 
rather than the less effective 
copyright statutes. The law 
clearly prohibits the produc¬ 
tion of work-alike devices 
to replace The BLOCK. 


The BLOCK attaches to 
any communications port of 
virtually any microcomputer. 
It comes with a unique 
customer product number 
programmed into the circuit. 

The BLOCK is transpar¬ 
ent to any device attached to 
the port. Once it is in place 
users are essentially unaware 
of its presence. The BLOCK 
may be daisy-chained to 
provide security for more 
than one software package. 

Each software developer 
devises their own procedure 
for accessing The BLOCK 
to confirm a legitimate user. 
If it is not present, then the 
program can take appro¬ 
priate action. 

. .possibilities... 
limited only by your 
imagination ... 99 

The elegance of The 
BLOCK lies in its simplicity. 
Once you understand the 
principle of The BLOCK, 
hundreds of possibilities will 
manifest themselves, limited 
only by your imagination. 

Your efforts, investments 
and intellectual property 
belong to you, and you have 
an obligation to protect 
them. Let us help you safe¬ 
guard what’s rightfully yours. 
Call today for our brochure, 
or a demo unit.” 



1 offware 
ecurity inc. 


870 High Ridge Road Stamford, Connecticut 06905 

203 329 8870 




CIRCLE NO. 189 ON READER SERVICE CARD 














CODEVIEW 


a short section with examples. An excel¬ 
lent, separate index is provided for the 
CodeView section in the manual. 

The demonstration disk, “Learning 
Microsoft CodeView,” provides a very 
good overview to the product and 
shows some of the ways that it can be 
used. The demonstration disk is cur¬ 
rently available separately from Micro¬ 
soft and can be freely copied and dis¬ 
tributed. It is recommended. 

Microsoft provides a technical sup¬ 
port hotline at no extra cost, and tele¬ 
phone support for CodeView is good. 
Microsoft technical support people are 
able to answer questions quickly. 

As a full-featured visual debugger, 
CodeView is professional and solid. It 
can handle source code and assembly 
language in all memory models fur¬ 
nished by Microsoft C. In addition, the 
interface for third-party debugging 
hardware can be used to enhance the 
performance of CodeView’s watchpoints 
and tracepoints. 

As with any product, CodeView can 
be improved. Documentation for the 
display expression and dual-display fea¬ 
tures should be clarified. A method for 
presetting watch expressions before a 
procedure is reached would be a wel¬ 
come addition. Compatibility with mem¬ 
ory-resident programs should be added. 
CodeView is not friendly to pop-up pro¬ 
grams such as Borland’s SideKick. Dur¬ 
ing testing, calling SideKick from within 
CodeView caused the AT to freeze up, 
requiring a reboot. 

Features such as the execute mode 
and watch expressions provide quite a 
powerful method for monitoring a pro¬ 
gram’s behavior in detail at the source 
code or assembly level. CodeView’s fea¬ 
tures for source-level debugging make 
it much less intimidating to the pro¬ 
grammer who is not familiar with as¬ 
sembly language or machine instruc¬ 
tions. While providing debugging at 
source level, CodeView has not sacri¬ 
ficed the ability to perform the more 
traditional low-level debugging. 1 "ilimim 

Microsoft Corporation 
16011 Northeast 36th Way 
P.O.Box 9098017 
Redmond, WA 98073-9717 
206/882-8080; 800/426-9400 
C Compiler: $450 

CIRCLE 343 ON READER SERVICE CARD 



The best new 
from one of the 
own publishers. 

C COMPILER 


C+ + 

ADVANTAGE C+ + 

• New object-oriented language lets 
you develop large and complex 
programs more productively. 

• Write reliable, reusable code that 
is easier to understand and 
maintain. 

• Fully compatible with existing C 
programs and tools. 

• All the benefits of C gpM.l 

without its limitations. /aM* 

• Available for Lattice and jjCgg0A« 
Microsoft C compilers. v 


ADVANTAGE C 

• Newest technology based on Al 
and advanced design. 

• Unmatched execution speed; 
full control of compilation 
environment. 

• Advanced optimization routines. 

• Over 250 library 
functions; full 
ANSI C library. 

• Microsoft C 
compatibility. 

We make the best 
software even better. 



MULTITASKING 

TimeS/icer 

• Create multitasking and real-time 
applications in C now! 

• No need to interface with the OS. 
Tasks can be created, suspended or 
terminated at run-time. 

• Optimize processor usage and 
transparency. 

• Compatible with Lattice C, 
Microsoft C, ADVANTAGE C + + and 
object-oriented 
programming. 

• Header files for C and 
assembly language. 

LINKER 

ADVANTAGE Link 

• Fastest, most powerful PC-DOS 
overlay linker. 

• First linker to take full advantage 
of EMS. 

• Supports 53 commands. \$jm 

• Compatible with 
Microsoft CodeView 
and Pfix Plus. 




After 10 years of publishing soft¬ 
ware, we know what's important 
to you. We're committed to full 
service that goes beyond just selling 
you the best software at competitive 
prices. Our expert staff can help you 
choose the right programs and 
provide full technical support. Count 
on Lifeboat for the complete solu¬ 
tion to all your programming needs. 


Call for the latest 
products from: 

Blaise ■ Computer innovations« 
CompuView • Essential • GSS • 
Gimpel ♦ Greenleaf • Informix • 
Lattice • Media Cybernetics ■ 
Microsoft • Oregon Software • 
Periscope • Phar Lap • Phoenix • 
Rational Systems • Roundhill • 
SoftCraft - and more 


can 1-800-847-7078 

in ny 914 - 332-1875 

or your local Lifeboat Authorized Dealer. 


GRAPHICS 

ADVANTAGE Graphics 

• Complete C programming 
graphics library. 

• Create bar and pie charts 
with one command. 

• No royalties or run¬ 
time fees. 


The Full-Service Source for Programming Software. 

UttBQAT 

55 South Broadway 
Tarrytown, NY 10591 
Telex #510-601-7602 



FORTRAN 4.0 Compiler: $450 

CIRCLE 344 ON READER SERVICE CARD 


Mark S. Ackerman is a software engineer 
currently working on Project Athena at the 
Massachusetts Institute of Technology. 


INTERNATIONAL SALES OFFICES 


Australia/New Zealand: 

Charlton Distributors 
Phone: (64) (09) 766-361 
Canada: Scantel Systems 
Phone: (416) 449-9252 
England: Grey Matter, Ltd. 
Phone: (44) 364-53499 
System Science, Ltd. 
Phone: (44) (01) 248-0962 


France: Compusol 
Phone: (45) 30.07.37 
Italy: Lifeboat Associates 
Italia 

Phone: (02) 464601 
Japan: Lifeboat, Inc. 
Phone (03) 293-4711 
Spain: Micronet, S.A. 
Phone: (34) 1-262-3304 


The Netherlands: SCOS 
Automation BV 
Phone: (31) 20-10 69 22 
West Germany: MEMA 
Computer GmbH 
Phone: (69) 34-7226 
Omnitex 

Phone: (76) 23-61820 


MARCH 1987 


CIRCLE NO. 173 ON READER SERVICE CARD 


99 
































9:02: “A database manager? How many months will this take? 



2:19: “From now on I’m taking the easy’ way out. 




What it does is hard 
How it does it is easy. 


Ahe reason most people use a database 
manager is to make work easier But most 
database managers are so difficult to use 
they end up making work harder 
That’s why many companies that had 
already standardized on complex sys¬ 
tems like dBASE® are re-standardizing on 
DataEase.™ 

DataEase. No database manager that 
does as much is easier 
DataEase is easy because you don’t 
have to program. Menus with easy to 
understand commands like “cut” and 
“paste” lead you through the process of 
setting up forms, files and reports. 

And DataEase is just as powerful as 
much more complex systems. But the 
power of DataEase becomes available as 
you need it. So the transition from building 
simple applications to building complex 
ones is smooth. And easy 
DataEase also makes it easy to use 
information stored on other computers. 
Because the only thing that changes is 
where the data comes from. DataEase 
LAN™ and DataEase Connect™ automat¬ 
ically get the information you need. No 
matter where it is-on another PC, LAN 


server minicomputer or mainframe. 

Creating complex business graphics 
is easy with DataEase GrafTalk™ And 
DataEase Developer™ has everything you 
need to document and encrypt your appli¬ 
cations and build demonstration disks. 
And, of course, it’s easy too. 

The DataEase Family They can do 
everything. And everything they do is easy 
Send us the coupon for more about 
the DataEase Family including a free 
DataEase demonstration disk. Or call 
1-800-334-EA5E, or 203-374-8000. 


I PCTJ 3/87 1 

I DataEase International, Inc. i 

12 Cambridge Drive, Trumbull, CT 06611 
I 1-800-334-EA5E I 

' □ Please send me more information about ■ 

| □ DataEase □ LAN □ Connect I 

0 □ GrafTalk □ Developer 1 

| □ Please send a free DataEase demonstration disk, j 

• □ Please have a DataEase representative call. I 

Name___Title_ * 

' Company_Phone_ ■ 

I Address__ ! 

| City-State_Zip_ | 

| No. of PCs on site D1-10 Dll-50 D51+ I 

□ IBM PC/XT/AT □ IBM COMPATIBLES DWANG DDEC DOTHER 

I-1 

Software Solutions, Inc. is now DataEase International, Inc. 

DATAEA5 

If it was hard to use 
we would have called it DataHard. 



Canada (416) 231 -1270 • United Kingdom 01-554-0582 • Italy 2-836-0097 • Benelux (31.) 73-414855 (Holland) • Scandinavia (47) 71-46166 (Norway) 

Switzerland 985152 • West Germany/Austria 89-461-3257 (Munich) • Australia (03) 699-7255 • Brazil 11-881-0600 

CIRCLE NO. 144 ON READER SERVICE CARD 


dBASE is a trademark of Ashton-Tate 


© 1987 DataBase International. Inc. 







AUGIE HANSEN 


Mapping 

PC Address 
Space 


Memory and I/O 
address maps can 
help developers 
identify the available 
memory and port 
locations for appli¬ 
cation programs. 


T he Intel 8086 family of micropro¬ 
cessors, including the 8088 and 
80286 chips that are the back¬ 
bones of the IBM PC product lines, can¬ 
not operate in a vacuum. They must 
communicate with entities outside 
themselves to perform useful work: 
memory, both RAM and ROM; and ex¬ 
ternal devices such as display systems, 
disk drives, and keyboards. 

The microprocessor accesses mem¬ 
ory and external devices in two primary 
ways. It uses a set of address leads to 
form either memory addresses or I/O 
addresses (called ports). The 8086/88- 
based machines have 20 address leads, 
permitting direct addressing of up to 
1MB of memory. Figure 1 shows the ba¬ 
sic 20-bit address bus used by the PC, 
PC/XT, and PCjr, Machines based on the 
80286 use an additional 4 address leads 
for a total of 24, yielding a maximum 
directly addressable memory of 16MB. 

All of the 8086 family microproces¬ 
sors are also capable of addressing up 
to 64K ports. This separate address 
space is accessed via some of the same 
address leads used to access primary 
memory, but the processor operates in 
a different mode when reading and 
writing ports. The microprocessor can 
access either memory or a port, but not 


both at the same time. Instructions such 
as MOV use the address leads to access 
memory, but IN and OUT instructions 
cause the processor to access ports in 
the I/O address space. IBM chose to use 
only the first 10 address leads (A0-A9) 
when addressing ports, so PCs nomi¬ 
nally have access to only 1,024 ports. 

Certain areas of the memory and 
I/O spaces of a PC are reserved for sys¬ 
tem uses. The uses are, for the most 
part, common across the PC family, with 
some variations. One of the problems 
faced by developers is knowing which 
memory locations and ports are used 
by a given machine and which are avail¬ 
able for use by application programs. 
The PC, PC/AT, XT, and PCjr (and most 
compatibles) can be treated identically 
for certain classes of system data and 
access points, but variations have been 
introduced that must be accounted for 
in program designs. 

The memory and I/O address maps 
in this article are designed to aid pro¬ 
grammers and hardware designers by 
making memory and port information 
readily available. The maps provide an 
overview of the allocation of memory 
and I/O address spaces in the PC ma¬ 
chines. Areas of particular interest are 
expanded to show additional detail. 


102 


PC TECH JOURNAL 


COMPUTER GRAPHIC* DOVJACOBSON 



















































I/O MAPPING 


Only the first 640KB of the 1MB of 
address space can be populated with 
RAM; this is the maximum amount sup¬ 
ported by current versions of DOS. The 
rest of the address space is dedicated to 
system-related items, such as ROM 
BIOS, BASIC, expansion ROM for add-in 
boards, and video display memory. In 
the user area of memory, system data 
and interrupt vectors, device drivers, 
and the operating system (which grow 
with each new release) occupy a signifi¬ 
cant amount of space. Add to that a gen¬ 
erous amount of space for the omnipre¬ 
sent resident utilities and a user-friend¬ 
ly shell or task switcher, and it is a 
wonder that any room is left for appli¬ 
cation programs to load and run, even 
on machines that are equipped with the 
full complement of memory. 

Figure 2 is a coarse memory ad¬ 
dress map showing the basic memory 
allocations envisioned by IBM. (All of 
the maps in this article use the conven¬ 
tion of increasing addresses moving 
down the page and from left to right.) 
To run DOS, the primary RAM area 
must start at 0, be’ contiguous, and be 
large enough to run the operating sys¬ 
tem and its extensions (device drivers 
and other resident code) and to load 
and run the user’s application program 
code and data. Isolated blocks of mem¬ 
ory are not accessible to DOS except 
through special programs (RAM disk, 
print spooler, and so on), which are 
usually implemented as DOS device 
drivers or terminate-and-stay-resident 
(TSR) programs. 

BASIC (except in the PC/r, which 
uses cartridge BASIC) and the ROM 
BIOS reside at the high end of the PC’s 
memory space. The ROM BIOS is the 
firmware portion of the PC’s basic in¬ 
put/output system, the low-level inter¬ 
face between the computer and devices 
that serve the user. 

Versions of the ROM BIOS starting 
with the introduction of the XT use a 
feature called ROM SCAN to look for 
additional ROM (hard disk and other 
special BIOS modules) in the expansion 
ROM area. This enables an XT, for ex¬ 
ample, to boot from a hard disk instead 
of diskette drive A:. Any executable 
code found in the expansion ROM area 
is given control after the primary boot¬ 
strap sequence completes. Control 
eventually returns to the BIOS initializa¬ 
tion routine, which either loads DOS 
(or another operating system) or 
defaults to BASIC. 

An area of special interest is the 
lowest portion of RAM. The low mem¬ 
ory map presented in figure 3 shows 
the groupings of information in the re- 



PCs based on the 8088 microprocessor use a 20-bit address bus. Machines based 
on the 80286 use a 24-bit address bus, yielding a 16MB address space. 



Only the first 640KB of the PC’s 1MB address space can be populated with RAM; 
the rest is dedicated to ROM, display buffers, and other system-related items. 



Interrupt vectors point to the routines that provide wide range of services. Mem¬ 
ory locations in the range of 400H to 5FFH hold ROM BIOS and DOS-related data. 


104 


PC TECH JOURNAL 













































gion from address OH to 5FFH. The in¬ 
terrupt vectors point to the routines 
that provide a wide range of services on 
demand. Memory locations in the range 
of 400H to 5FFH hold ROM BIOS and 
DOS-related data. These locations are 
useful because they contain system con¬ 
figuration data, vital disk, keyboard, and 
video information, and miscellaneous 
status flags and values. 

Some of the information, such as 
equipment flags, in the BIOS data area, 
shown in figure 4, is available with DOS 
and BIOS interrupts and should be ob¬ 
tained in that way to guarantee portabil¬ 
ity among PC models and versions of 
DOS. Other information, however, can 
be obtained only by reading locations 
directly. For example, two bytes provide 
keyboard status information. The first is 
at 417H. The value it holds is bit-signifi¬ 
cant to indicate the status of special 
keys, such as Caps Lock and Num Lock. 
The information can be obtained by 
calling BIOS interrupt 16H, function 
number 2 (Shift status). A second byte 
at 418H indicates whether one of the 
special keys is currently in a pressed or 
released state, plus some PC/r-specific 
key information. This information is not 
available through BIOS calls and must 
be read directly. 

Reading information directly usu¬ 
ally is not a recommended procedure. 
However, IBM says that it intends to 
maintain the structure and organization 
of the BIOS data area in its future PCs, 
so that programs can safely access the 
locations without becoming obsolete 
because of new equipment and operat¬ 
ing system versions. 

Above the transient program area 
(TPA) beginning at memory address 
A0000H is a reserved area for video 
adapters. Figure 5 shows the memory 
allocations for various video adapter 
configurations. Only a small sliver, 4KB 
in all, beginning at address B0000H is 
occupied by the standard IBM Mono¬ 
chrome Display and Graphics Adapter. 
The Color Graphics Adapter (CGA) 
starts at B8000H and extends upward 
for 16KB. Both a monochrome adapter 
and a CGA can be installed in a PC, but 
programs that depend on the standard 
video services provided by DOS and 
ROM BIOS can access only one display 
at a time. Programs that write to both 
display types simultaneously are using 
direct-screen access methods that are 
potentially troublesome to some PC 
operating environments (TopView, 
Windows, GEM). Quarterdeck’s Desq- 
View does not seem to be affected. 

The region from A0000H to 
AFFFFH, although marked RESERVED by 



Some of the information in the BIOS data area is available via DOS and BIOS in¬ 
terrupts and should be obtained in that way in order to guarantee portability. 


FIGURE jj Display Memory Allocations 



The 128KB area beginning at memory address AOOOOH is reserved for video adapt¬ 
ers. Only 4KB is occupied by the standard IBM monochrome display adapter. 


IBM, was used by some vendors as an 
extension of the TPA; DOS can be in¬ 
structed to use RAM that is installed 
there provided it is contiguous with the 
lower regions of RAM. Several cards 
place an isolated block of memory in 
the region for use as a print spooler or 
RAM disk. These rogue memory alloca¬ 
tions now conflict with applications that 
expect to find an Enhanced Graphics 
Adapter (EGA) starting at AOOOOH. 

The EGA can contain up to 256KB 
of memory mapped into planes that can 
be allocated in several ways, (see “The 
EGA Standard”, John T. Cock'erham, 
October 1986, p. 48). When the EGA is 
masquerading as either a monochrome 
adapter or a CGA, its memory allocation 
starts at the expected monochrome 


adapter or CGA addresses and occupies 
32KB. When configured to operate in 
pure EGA modes, the memory alloca¬ 
tion starts at AOOOOH and occupies 
either 64KB or 128KB depending on 
the selected buffer address option. 

The maps specified by the over¬ 
view in figure 6 show the I/O addresses 
that are currently allocated and re¬ 
served for future allocation by IBM. 
They are designed to help developers 
understand the mystery of the PC’s I/O 
address space. Each row in a map (fig¬ 
ures 7-12) represents 16 I/O addresses 
(ports), starting at the number shown at 
the left end of the row. Each figure 
maps 256 consecutive I/O addresses. 
The first 3 I/O address maps present in¬ 
formation about the same block of ad- 


MARCH 1987 


105 



















































I/O MAPPING 



Programmers & 
Developers 

New 

Products! 


Distribute Your Demos with 
No Royalties 

Screen Machine creates interactive demos, 
tutorials, menu systems and DOS shells. In¬ 
cludes a text screen editor that optionally 
generates source code* and binary or text 
files. Never write code for screen display 
again. Capture any program’s text screens for 
editing and your own use. Capture CGA com¬ 
patible graphics screens for BLOAD or direct 
display. SAVE hundreds of HOURS of work. 

Now there’s no need for separate screen and 
demo software packages and no need to pay 
outrageous royalties. Priced at only $79.00. 

•Turbo Pascal, Mach 2 for Turbo, Assembler, dBASE II & III, 
BASIC (including The Inside Track and Mach 2). 



The I/O address space as defined by IBM is divided into several areas, with the first 
being reserved for system board devices and the remainder for I/O channel devices. 


Supercharge Turbo Pascal 

Mach 2 for Turbo Pascal adds assembler 
speed to your programs. 90 + subroutines, 
most in assembler, give you speed and func¬ 
tionality you never knew was possible. No 
knowledge of assembler language required. 

INSTANT displays. INSTANT windows (incl. 
exploding and boxed). FASTEST sort you’ve 
seen. Read /write files FAST as DOS. IN¬ 
STANT menus, 1-2-3 horizontal and vertical 
bar. 

Trap A C/ A Break & DOS critical errors so no 
more A)bort, R)etry or l)gnore. Emulate 
BASIC PRINT USING for FAST formatted 
numbers. Execute any prog, batch or DOS 
command without ending program. 

Read environment. Read file directory. 
Get/set file attributes. Plus too many string 
functions to describe here. No royalties when 
you distribute COM programs. All source 
code included. A true bargain at $69.00. 


NOT COPY PROTECTED. 30 Day Money-Back 
Performance Guarantee. Requires IBM/com¬ 
patible & DOS 2 +. 

Order Now 800-922-3383 

We welcome VISA/MC. COD US only $3. 
S/H US $3, Canada $5, Elsewhere $18. GA 
res. add tax and call 404-973-9272. Demo 
available. Send $5 check. Refunded on direct 
purchase. 

We also publish Stay-Res, Mach 2 for BASIC, 
The Inside Track and Peeks ’n Pokes. 

MicroHelp, Inc. 

2220 Carlyle Drive 
Marietta GA 30062 


dresses for the PC and XT, the PC/r, and 
the AT because of significant differences 
in the allocations in each machine. The 
remaining I/O address maps are com¬ 
posites for the four major PC models. 

For the PC, XT, and PC/r, when ad¬ 
dress lead A9 is low, addresses refer to 
I/O ports on the system board (000H- 
OFFH). Addresses in the 100H-1FFH 
range are not decoded. When A9 is 
high, addresses refer to ports in the I/O 
channel (200H-3FFH). The AT operates 
differently. It devotes the OOOH-OFFH 
range to system board functions, as do 
the other models, but it allows the en¬ 
tire 100H-3FFH range to be used by ad¬ 
apters in the I/O channel. To date, the 
only allocation by IBM in the 100H- 
1FFH block of addresses is for the AT’s 
hard-disk controller at 1F0H-1F8H. 

Three separate maps are presented 
for the OOOH-OFFH range. Figure 7 
shows PC and XT allocations; figure 8 
shows only PC/r allocations; and figure 
9 shows only AT allocations. The AT 
claims nearly all of the I/O addresses, 
having both enlarged allocations for 
various support chips (timer, DMA, PIC) 
and added allocations for a second in¬ 
terrupt controller, a second DMA con¬ 
troller, the realtime clock, and the num¬ 
eric coprocessor. CMCB at I/O address 
OFOH is Clear Math Coprocessor Busy 
and RMC at 0F1H is Reset Math Copro¬ 
cessor . A composite of the three maps 
reveals a potential problem for IBM; no 
free I/O ports are available in the block 


assigned to system board use. Future PC 
designs may need to expand the I/O ad¬ 
dress allocations and assign system uses 
to areas previously reserved for exter¬ 
nal devices in the I/O channel. 

The 100H-1FFH range (figure 10) is 
used only in the AT and only for the 
hard disk. The map, therefore, shows 
many open I/O addresses in this range. 
Hardware that depends on the use of 
ports in this address range, however, 
functions properly only in an AT or a 
compatible machine. Consequently, for 
compatibility across the PC family, hard¬ 
ware designers should try to avoid this 
range of I/O addresses. 

The 200H-2FFH address range (fig¬ 
ure 11) appears to have a lot of open 
space, but it is actually a crowded 
range. Communications ports, special 
graphics interfaces, and hundreds of 
other optional hardware devices are all 
vying for very limited real estate in this 
area. A full 16 ports have been reserved 
for game I/O, although to date, systems 
use only port 201H. When an expansion 
unit is added to a PC, the 8 ports start¬ 
ing at 210H are used for communica¬ 
tions between the units. 

IBM is beginning to use the block 
of 48 RESERVED ports starting at port 
220H. The voice communications adapt¬ 
er sits at port 21FH. (Three alternative 
assignments are above 3FFH.) 

The block of I/O addresses starting 
at 278H is reserved for use by a parallel 
printer. If the system is equipped with a 


CIRCLE NO. 257 ON READER SERVICE CARD 

106 


PC TECH JOURNAL 



























GOODBYE, IBM 


THANKS FOR THE MEMORIES 


Have you ever noticed how time seems 
to change everything? Fashions change. 
Technology changes. Even the microcom¬ 
puters we use change. Maybe that’s why 
so many of our customers are saying 
goodbye to IBM in favor of a “good buy” 
from Wells American. 


rated by leading industry trade journals. 
Even so, we’ve heard that some “big blue” 
old-timers still worry about trading their 
IBM “security” blanket for better priced, 
higher performance equipment. (Remem¬ 
ber how difficult it was to give up your 
baby blanket?) That’s why we’ve arranged 


for RCA, one of the world’s largest tech¬ 
nical service organizations with 18,000 
employees, to provide low cost, nation¬ 
wide maintenance for our A ★Star II. 
And if that’s not enough, every unit in¬ 
cludes free schematics and a no risk 
money-back guarantee. 



Corporate Headquarters: 3243 Sunset Boulevard • West Columbia, South Caro 


IBM. Personal Computer AT and AT are trademarks of Internatir i 

CIRCLE NO. 124 ON READER SERVIC 


ina 29169 • 803/796-7800 • TWX 510-601-2645 

nal Business Machines. 

t CARD 


As time goes by, more and more com¬ 
puter users are realizing what an extraor¬ 
dinary value our A^Star II® truly is. It’s 
the only AT class microcomputer that can 
run at 6, 8, 10 and 12 MHz! It’s also the 
only PC/AT compatible that’s “network 
ready.” Better yet, each A^Star II now 
comes with your choice of keyboards - 
the original AT version or the enhanced 
“RT” style. Best of all, A ★Star II prices 
start at only $995! 

But what about quality and support? 
Don’t worry! We’ve been making micro¬ 
computers longer than IBM! And it shows. 
Our A^Star® computers have been top 


THE A^STAR II IS MADE IN THE USA. 


Still need a blanket? We’ve got you 
covered! Try out one of our A^Star II’s 
and we’ll send you one. It’s baby blue, 
monogrammed and...it’s absolutely free! 
Well also include a $395 option, at no 
charge, with your first A^Star II purchase. 
This offer is limited, so call or write us to¬ 
day. Just because you’ll be saying goodbye 
to IBM doesn’t mean you’ll have to say 
goodbye to quality, support or security. 
Besides, at least you’ll still have your 
memories... and your money! 

Wells American 








I/O MAPPING 


monochrome adapter, this becomes 
LPT3; otherwise, it is treated as LPT2. 
The initialization phase of the DOS 
loading procedure accommodates the 
hardware configuration automatically. 
The secondary asynchronous communi¬ 
cations adapter (COM2) is allocated 
eight ports beginning at 2F8H. Addition¬ 
al allocations may be made for serial 
adapters at other I/O addresses; howev¬ 
er, a specially written device driver or 
application code is required to access 
the new, nonstandard allocations. 

The range of I/O addresses from 
300H-3FFH (figure 12) also is mostly ac¬ 
counted for with the various allocations 
for network and communications adapt¬ 
ers and the EGA that have been added 
in the last year or two. This range was 
already heavily laden with assignments 
for video display hardware (mono¬ 
chrome adapter and CGA), communica¬ 
tions devices of both the synchronous 
and asynchronous persuasions, and the 
hard-disk controller (except for the AT 
hard-disk controller that was placed in 
ports 1F0H-1F8H). The parallel printer 
assignment starting at 378H is LPT2 if an 
IBM monochrome display/printer adapt¬ 
er is installed or LPT1 if not. 

Neither IBM nor any other organi¬ 
zation is making an effort to parcel out 
the available I/O addresses in a coordi- 



PCs require I/O addresses only for the interrupt controller, timer, and speaker 
driver system devices located on the system board; quite a bit of open space ex¬ 
ists in this map compared to that of the AT. 


Soft *Rite » LANbasic! 

Soft*Rite announces a Superior three-part programmer’s tool. 
Microsoft BASIC™ compatible in every place that counts. * 


LANscreen 


LANbasic 


LANdbase 


LANscreen makes the burden of defin¬ 
ing your database record structures one 
that you will look forward to instead of 
dread. Standard fields and types such 
as “Money”, “Telephone” and “Date” are 
one keystroke to generate. As many as 
255 database structures can be related 
to a single screen! Segmented data 
input can be done automatically by edit¬ 
ing the field display. Part numbers with 
spaces or dashes and slashes are auto¬ 
matically parsed down to the essential 
raw data. Definable Upper and Lower 
limits for numeric inputs along with 
ACCEPT/EXCEPT input filters are stand¬ 
ard features. Screen Mask generation is 
done with a “freestroke” approach. You 
may put mask elements and data 
input/output cells wherever you wish. 
COLOR them too! EGA support too! 

‘Drivers Installed for IBM PC-NET/MS-NET 


LANbasic is your own personal solution to 
powerfull data manipulation. How many times 
have you got excited over some new “total'' 
database package only to find out (after 
spending a fair amount of time and money) 
that you were stuck in some corner, unable to 
do some function that has become standard 
in “In Business for Money’s” Basic? The 
manual is 400 pages long, so we cannot fully 
describe all the features, but here are a few in 
ADDITION to the ones you are now used to: 

★ COMDATAS 14 common areas ALWAYS 
available to inside or outside, chained or 
linked programs ★ Re-assignable printer 
ports LPT1 -LPT4 ★ Generic filename use that 
allows file and database locations to be re¬ 
defined outside of basic in a user-created 
REDIRECTOR file, to ease multi-user system 
configuation ★ USESCREEN,<1-16> ★ 
SCREEN IN PUT. <anyfield > ★ SCREENOUT- 
PUT,<anyfield> ★ OPENDB, < remote or 
local database manager> ★ 

DBGET, <variable from DBM, automatically 
defines and dimensions in LAN basic> ★ 
DBPUT,<same> 


LANdbase is the home for your data. 
LANbasic calls are coupled to LANd¬ 
base via network comunications (PCnet 
or ?). A single keyvalue and function 
number will return a record. Multiuser 
record locking is handled by simply put¬ 
ting an ‘X’ after the read call. (i.e. 
RDDBEQUX,<argument>. Automatic 
“health checking” to warn you of poor 
hardware performance and lost or frag¬ 
mented data. “Paranoid” mode of opera¬ 
tion where files not accessed for some 
time will be closed and reopened to 
flush buffers and insure integrity. Pass¬ 
word, Userlevel and Data encryption 
functions. Several DBM’s can be 
installed in the network system to 
improve performance and reliability. Tog¬ 
gle mode screen (printer) reporting to 
record log-on or other access activites. 
Bill Fairman’s tried and proven true C- 
Tree(c) data management product. 


Soft*Rite Multi-User Programming Tools 
15381 Chemical Lane, Huntington Beach, CA. 92649 

(714) 898-0525 

CIRCLE NO. 186 ON READER SERVICE CARD 


108 


PC TECH JOURNAL 






































FIGURE 8: System Board Ports, PC\v 



0 l 1 l 2 1 3 i ^ , 5 , 6 , 7 , 

1 8 1 9 , A , B , C , D, E, F 


000 



010 



020 

8259A PIC 



030 



040 

8253 TIMER 



050 



060 

8255A PPI 



070 



080 



090 



0A0 



0B0 



OCO 

SN67496N SOUND CHIP 



0D0 



0E0 



0F0 

DISK-DRIVE CONTROLLER | 





In addition to addresses for system board devices common to the PC, the PC/r 
requires addresses for both its diskette drive and its sound generator. 


FIGURE 9 : System Board Ports. PC/AT 



8237A-5 DMA CONTROLLER #1 


8259A PIC #1 (MASTER) 


8254.2 TIMER 



8042 (KEYBOARD) 



H §| 


REALTIME CLOCK AND NMI MASK REGISTER 





DMA PAGE REGISTER 





8259A PIC #2 





8237A-5 DMA CONTROLLER #2 



RESERVED 

CM 

CB 

RMC 


NUMERIC COPROCESSOR 


The AT claims nearly all of the system board I/O addresses, having both enlarged 
allocations for existing support devices and designated locations for new ones. 



Complete 
C Programs 
in Half the Time, 
with Instant-C™ 

Y ou can create programs much faster 
with Instant-C than with convention¬ 
al programming tools. How? Because 
Instant-C is a high-performance inter¬ 
preter, there are no compile or link 
delays. Change your program, then 
test it immediately. No matter how 
large your program, the turnaround 
time is just seconds. 

“Instant-C means instant gratification.”—PC 
Magazine, Editor’s Choice for best 
C interpreter. 10/29/85 

Powerful source-level debugging 

saves your time. Conditional break¬ 
points, single-stepping by statement, 
source code backtraces, data moni¬ 
toring, and many other debugging 
features make it easy to wipe out bugs 
quickly. Direct execution of any state¬ 
ment or function makes testing a 
breeze. 

"The resulting debugging and testing capa¬ 
bilities are fantastic and the detailed trace/de¬ 
bug/display commands make it easy.”— The 
C Journal, Summer/85 

Instant-C checks pointer references for 
reasonableness, and checks that array 
indexes are within declared bounds. 
This run-time checking stops your 
program as soon as errors occur, for 
easiest debugging. 

Not only does Instant-C help you 
quickly change, test, check and debug 
your code, but it runs your program 
fast enough for real-time appli¬ 
cations. 

"It is much faster than any of the other pro¬ 
ducts mentioned and was the only one able to 
complete the standard SIEVE in a reasonable 
time. Clearly, this high speed allows much 
more complex problems to be attacked with 
Instant-C than with any of the other products 
discussed.”— Computer language, 2/86 

Immediate feedback and precise 
diagnostics make Instant-C great for 
learning C. Full K&R and the ability to 
link compiled object code and li¬ 
braries (Lattice and Microsoft) makes 
Instant-C compatible with your existing 
programs. 

Instant-C makes all parts of the 
programming task as fast as possible. 

“Clearly, Instant-C is the performance 
champion.”— PC Tech Journal, 5/86 

Version 2 works with MS-DOS and 
PC-DOS, and has a full 31 day money 
back guarantee. Instant-C is only 
$495. Order today! Call or write for 
full information. 

I? ti nn 1 ^ ox 

l\dUUIldl Natick, MA 01760 

(617) 653-6194 


Systems, Inc. 


CIRCLE NO. 181 ON READER SERVICE CARD 

109 


MARCH 1987 



























































I/O MAPPING 


FIGURE 10; / O OkmnelToi^ PC AT Only 


0 | 1 | 2 | 3 | 4 1 5 | 6 1 7 | 8 | 9 | A | B | C 1 D | E 1 F 


100 


110 


120 


130 


140 


150 


160 


170 


180 


190 


1A0 


1B0 


ICO 


1D0 


1E0 


1F0 

HARD-DISK CONTROLLER 
— 



This range of I/O addresses is used only in the AT and only for the hard disk. 
Devices that depend on the use of these ports will not function properly on PCs. 


nated way. With the introduction of 
multiport serial boards (see “Beyond 
COM2,” Augie Hansen, September 1986, 
p. 68), the crowding has worsened. 

Some of the multiport boards require 
32 or even 64 contiguous I/O addresses, 
which makes it very difficult to find a 
home for them. This is why add-in 
boards that allow users a wide latitude 
in the selection of I/O addresses 
through switches or jumpers have defi¬ 
nite advantages over comparable prod¬ 
ucts that use fixed port assignments. 

EXPANDING THE SPACE 

Adapter cards are free to do I/O ad¬ 
dress decoding using more than the ten 
lines decoded by the system board and 
by most of the earlier IBM adapters, 
thus permitting port numbers up to 
FFFFH if all 16 address lines are used. 
Recently introduced adapter cards are 
beginning to set the trend toward ex¬ 
panded I/O address space. 

Expanded memory boards use two 
additional address lines to obtain larger 
allocations of I/O addresses (see “Ex¬ 
pandable Memory,” Ted Mirecki, Febru¬ 
ary 1986, p. 66). IBM’s Cluster Adapter 
can be set to decode addresses in the 
ranges of 790H-793H, 890H-893H, 
1390H-1393H, or 2390H-2393H because 
it decodes two additional address leads. 
Some recent products, such as the ser¬ 
ial boards made by ESE Technologies, 
use all 16 address lines to decode any 
of the 64K I/O addresses that can be 
presented on the address bus. 

There is a catch, however. Any 
board in the I/O address space that de¬ 
codes only the first 10 address lines will 
respond to any higher address, formed 
with a greater number of address lines, 
that happens to present the expected 
bit pattern on the lower 10 address 
lines. For this reason, developers still 
must be careful to avoid using previ¬ 
ously claimed port numbers. 

The advantage to using more ad¬ 
dress lines is that a given available port 
number, say 250H, can be multiplexed 
into as many as 64 separately addressa¬ 
ble ports (one port specified by lines 
A0-A9 multiplied by the 64 patterns that 
can be specified by the upper 6 address 
lines). As more and more board manu¬ 
facturers apply this technique, the port 
congestion problem will diminish a bit, 
at least in the near term. 

ACCESSING MEMORY AND PORTS 

The following examples show how to 
read and write memory and port values. 
Reading and writing PC memory would 
be easier if the Intel microprocessors 
had a linear address space. But because 


the registers that do the addressing are 
only 16-bits wide, a segment/offset 
scheme is used to address memory. 
Each address is specified as a segment, 
an address that falls on a paragraph 
boundary (a multiple of 16 bits), and an 
offset into that segment. Offsets range 
from OH to FFFFH. Twenty-bit addresses 
are formed by shifting the segment val¬ 
ue left by four bit positions (effectively 
multiplying it by 10H or 16 decimal) 
and adding the offset to the result. 

The easiest way to examine PC 
memory is to load the DOS DEBUG 
program and use the dump command 
(D) to look at memory directly. Ad¬ 
dresses are specified by using the seg- 
ment:offset notation. For example, 

-d 400:0 

would show the values of a block of 
memory locations in the BIOS data 
area. (The minus sign is the prompt 
provided by DEBUG.) A subsequent D 
command without a specified address 
will bring up a display of the contents 
immediately following those displayed 
by the previous D command. This is a 
convenient mechanism for stepping 
through a range of addresses. 

The DEBUG program also can be 
used to alter and write byte values any¬ 


where in memory. The enter (E) and 
fill (F) commands can alter the values 
of a byte or a sequence of bytes. To ini¬ 
tialize the range of bytes from 200H to 
300H in the current data segment, for 
example, type 

-f ds:200 300 0 

and all bytes in the range assume the 
value of 0. 

The interactive memory and port 
access offered by DEBUG is useful for 
examining the PC’s inner workings and 
testing programs under varying condi¬ 
tions. Working with memory and ports 
from within programs is a different mat¬ 
ter. Assembly language and nearly all 
high-level languages give programmers 
a variety of tools to read and write 
memory locations anywhere in the 
computer’s address space. 

Assembly language provides the 
greatest level of machine access for pro¬ 
grammers. An assembly language rou¬ 
tine presented in “Instant Screens” 
(Augie Hansen, June 1986, p. 96) per¬ 
forms a synchronized, intersegment 
memory copy of data from a user-de¬ 
fined video buffer to physical display 
memory. The routine uses direct port 
access to handle critical timing tasks 
and a string move instruction to copy 


110 


PC TECH JOURNAL 





























200 

210 

220 

230 

240 

250 

260 

270 

280 

290 

2A0 

2B0 

2C0 

2D0 

2E0 

2F0 


0 I 1 1 2 ■ 3 . 4 1 5 ■ 6 . 7 1 8 ■ 9 | A i B , c , D , E , F 


GAME CONTROL 


EXPANSION UNIT 


VGA 


RESERVED 


PARALLEL PRINTER 


3270-PC 


RESERVED 


SECONDARY ASYNCHRONOUS 
COMMUNICATIONS (COM2) 


This range of I/O addresses is actually quite crowded. Hundreds of optional hard¬ 
ware devices, such as communications adapters, are all vying for ports here. 



This range of I/O addresses is also mostly accounted for by network and com¬ 
munications adapters and video adapters that have been added recently. 


microDCF™ 
Text Workstation 

IBM DCF3 Compatible 
Text Processing System 
For Your PC 

• IBM Script language 

• IBM GML language 

• macro libraries 

• symbol support 

• multi-pass processing 

• high performance 

• laser printer support 

• table of contents 

• back-of-book index 

• user-definable languages 

• modular print manager 

• and much more... 

$795.- 

Quantity Discounts 
Site Licenses 
Full Maintenance 


TM 


APS/SPF 

Programmer 

Workstation 


IBM ISPF Compatible 
Program Development 
Tools For Your PC 

• ISPF PDF editor 

• dialog manager 

• dialog panel editor 

• utilities 

• multitasking while editing 

• directory file selection 

• customizable master menu 

from $145.- 


Arrix Logic Systems Inc. 

PO Box 142, Don Mills Stn. 
Ontario M3C 2R6, Canada 

(416) 292-6425 

TELEX 06-986766 TOR 

IBM is a registered trademark of International 
Business Machines Corp. 


MARCH 1987 


CIRCLE NO. 122 ON READER SERVICE CARD 

111 














































































I/O MAPPING 


FIGURE 13: Assembly Language Port Access 


Listing 1. SYNC.ASM 



video 

status information 




VSTAT 

HRTRCE 

equ 

equ 

3dah 

1 

video (CRT) status register 

horizontal retrace bit mask 



mov 

dx,VSTAT 

; read c/g adapter status register 


wait_horizrefresh: 


in 

al,dx 


test 

al .HRTRCE 

; test horizontal retrace bit 

jnz 

wait_horiz_refresh 

; loop until not in a retrace period 

cl i 


; can't tolerate an interrupt here 

wait_horiz_ret race: 


in 

al,dx 


test 

al,HRTRCE 

; test horizontal retrace bit 

jz 

wait_horiz_ret race 

; loop until retrace starts 


The CGA’s control port can be examined to determine when the scanning beam is in horizontal refresh and retrace periods. 


data quickly from the program data seg¬ 
ment to the display data segment. 

The essence of the routine is pre¬ 
sented in the code fragment in figure 
13, which shows how to examine the 
CGA’s control port at 3DAH to deter¬ 
mine when the scanning beam is in 
horizontal refresh and retrace periods. 
To avoid visual interference, CGA mem¬ 
ory should be accessed only during 
horizontal or vertical retrace periods. 

BASIC provides the PEEK function, 
which yields the byte value at the speci¬ 
fied address (offset) in the current seg¬ 
ment. A DEF SEG statement must be 


used before calling PEEK if the current 
segment is not the one where the byte 
of interest is located. The companion 
POKE statement allows programs to 
alter the contents of memory locations. 
It, too, requires the use of a DEF SEG 
to declare the correct segment for the 
location to be accessed. BASIC also has 
the INP function and OUT statement 
that permit direct access to ports. 

C compiler vendors typically sup¬ 
ply UNIX-compatible standard link 
libraries that are augmented with PC 
memory and port-access functions. Most 
C libraries provide a set of standardized 


memory functions, such as memcpy 
(copy memory), memchr (search for a 
character in a specified region of mem¬ 
ory), and several others. In addition, the 
functions inp and outp are usually pro¬ 
vided to permit direct port access. 

Caution is advised when working 
in the PC’s address spaces. Poking data 
into the wrong place, such as a hard¬ 
disk parameter table, could cause prob¬ 
lems that are not easily reversed. The 
memory and port maps presented here 
are intended to be a general guide to 
where the important hardware elements 
of PCs are located and where new ones 
might be safely placed. 

REFERENCES 

Davies, Russ. COMPUTERS Mapping the 
IBM PC and PCjr. New York: Com¬ 
pute! Publications, Inc., 1985. This 
book is already slightly dated be¬ 
cause it does not cover the PC/AT, 
but it has many useful BASIC and 
assembly language examples. 
Jourdain, Robert. Programmer's Prob¬ 
lem Solver for the IBM PC, XT & AT. 
Englewood Cliffs, NJ: Brady Commu¬ 
nications, 1986. This excellent book 
is a desk reference in addition to be¬ 
ing a how-to book. It addresses many 
of the critical areas where programs 
meet machine and is full of helpful 
examples in several different pro¬ 
gramming languages. 

Technical Reference manuals (Hardware 
Reference Library), IBM. A version of 
this document is available for each of 
the IBM Personal Computer models. 
The maps in this article are a com¬ 
posite of the information presented 
in the Technical Reference manuals. 

Augie Hansen is the author of vi: The UNIX 
Screen Editor, (Brady/Prentice Hall Press, 
1986). His latest effort, an advanced C pro¬ 
gramming book called Proficient C, is due 
out in March from Microsoft Press. 


TOTAL CONTROL 
OF ALL YOUR FILES 

Easy Path .The Cadillac of hard disk management systems 
—Especially for programmers and power users- 

EasyPath fills the void in DOS by allowing 
complete access to all your hard disk files. 

Easy Path lets you 

• Access any file from any subdirectory 

• Redirect file retrieval or file storage 

• Execute any program from any sub¬ 
directory • Specify pathing for COM, 

EXE and all other files • Locate any file 
anywhere on your hard disk • Find 
files by name or attribute • Change 
attributes of files • Pipe files to RAM 
disks • Search for or redirect files by name, 
extension, attribute, subdirectory or other means 

• Use wildcards and global file names 

EasyPath comes with pre-configurated BAT files for most major programs, 
a complete user's guide, and online help. 

Now at a new low price of $59.95 directly from: 

ISOGON 




CORPORATION 

330 Seventh Avenue, New York, New York 10001 212 967-2424 


112 


CIRCLE NO. 139 ON READER SERVICE CARD 


PC TECH JOURNAL 

















WHY LOGITECH MODULA-2 
IS MORE POWERFUL 


THAN PASCAL OR C. 




Separate Compilation 
w/inter-module typechecking 
Native Code Generation 
Large Memory Model Support 
Most Powerful Runtime Debugger 
Comprehensive Module Library 
Maintainability 
Translator from Turbo and 
ANSI Pascal 

WIN A FREE TRIP TO 

Switzerland 


HOMELAND OF MODULA-2 

Return your Modula-2 Registration Card or 
a reasonable facsimilef postmarked between 
March 1,1987 and May 31,1987 to be included 
in a once-only drawing! 

Grand Prize: One week excursion for 2 in 
Zurich, Switzerland including a guided tour of 
ETH, the University where Modula-2 was 
created by Niklaus Wirth. European custom¬ 
ers may substitute a trip to Silicon Valley, 
California. 

Second and Third Prizes: LOGITECH C7 
Mouse or LOGITECH Bus Mouse with Paint 
& Draw software—a 5219 value, absolutely 
free! 

*Write to Logitech, Inc. for a registration card 
facsimile. 




APPRENTICE PACKAGE $99 

Everything you need to begin producing reliable 
maintainable Modula-2 code. Includes the Compiler 
with 8087 support, integrated Editor, Linker, and 
BCD Module. We’re also including FREE our Turbo 
Pascal to Modula-2 Translator! 




WIZARDS’PACKAGE $199 

This package contains our Plus Compiler—for 
professional programmers or for those who just want 
the best. The Plus Compiler with Integrated Editor 
requires 512K and takes advantage of the larger 
memory to increase compilation speed by 50%. Our 
Turbo Pascal to Modula-2 Translator is also includ¬ 
ed at no extra charge. 




MAGIC TOOLKIT $99 

We’ve put our most powerful development tools 
into one amazing Toolkit for use with either the 
Apprentice or Wizards’ packages. Highlighted by our 
Runtime Debugger, the finest debugging tool avail¬ 
able anywhere, the Toolkit also includes our Post 
Mortem Debugger, Disassembler, Cross Reference 
utility and Version which keeps track of different 
versions of one program. Our MAKE Utility figures 
out module dependencies and automatically selects 
those affected by code changes to Minimize recom¬ 
pilation and relinking. We also provide source code 
of our major library modules for you to customize— 
or just play with. 

WINDOW PACKAGE $49 

Now you can build true windowing into your 
Modula-2 code. Features virtual screens, color sup¬ 
port, overlapping windows and a variety of borders. 

ROM PACKAGE AND CROSS 
RUN TIME DEBUGGER $299 

For those who want to produce rommable code. 
You can even debug code running in ROM from 
your PC. 


Call for information about our 
VAX/VMS version, Site License, University 
Discounts, Dealer & Distributor pricing. 

To place an order call 
toll-free: 

800-231-7717 

In California: 

800-552-8885 

••••••••••••••••••••••••• 

1 want the spellbinding power 
of LOGITECH Modula-2! 

I □ Apprentice Package $99 

□ Wizards’ Package $199 

□ Magic Toolkit $99 

□ Window Package $49 

□ ROM Pkg/Cross RTD $299 

Add $6.50 for shipping and handling. Calif, residents 
add applicable sales tax. Prices valid in U.S. only. 

Total Enclosed $_ 


• • 

i YES! 


□ VISA □ MasterCard □ Check Enclosed 


Card Number 


Signature 


Name 


Address 


City 


State 


Phone 


LOGITECH 


LOGITECH, Inc. 

805 Veterans Blvd. Redwood City, CA 94063 
Tel: 415-365-9852 

In Europe: 

LOGITECH SA, Switzerland 
Tel: 41-21-879656 • Telex 458 217 Tech Ch 

In Italy: 

Tel: 39-2-215-5622 

HiiMiiiy 


Expiration Date 


Turbo Pascal is a registered trademark of Borland International. 
CIRCLE NO. 229 ON READER SERVICE CARD 


> • ••• •• •• •••• •; 


















JOHN T. COCKERHAM 








T o the field of computer languages, 
Niklaus Wirth has contributed 
three. His first, PL360, never really 
took hold as intended in the world of 
IBM 360 machines, yet within it Wirth 
had laid the groundwork for his next la¬ 
bor, the decidedly more successful Pas¬ 
cal. This second work continued a pro¬ 
gression in design and technique that 
have culminated in a language that 
boasts strong typing and highly struc¬ 
tured syntax, yet offers flexibility and 
low-level accessibility: Modula-2. 

The language itself is reconsidered 
here (pursuant to its introduction in PC 
Tech journal two years ago), and the 
current crop of Modula-2 compilers is 
appraised. (See "Modular Construction" 
and "Modular Implementation," Tom 
Woteki, Alan Frieden, Dpv Lew, Thor 
Bestul, and Robert Stine, November 
1984, p. 72 and December 1984, p. 154, 
respectively). The current list of lan¬ 


fiags on the 8088). Also, in PL360, the 
Boolean expression governing an IF 
statement could be a simple test on 
conditional code. For example, 


IF < THEN... 


guage implementations includes Inter¬ 
face Technologies Corporation (ITC) 
M2SDS (and SDS-XP), Logitech, Inc. 
Modula-2, Modula Corporation PC Mod¬ 
ula-2, PCollier Systems Modula-2PC, 
Pecan Software Systems Modula-2, and 
Workman ik Associates FTL. 

Wirth had introduced PL360 in 
1968 as a single-pass, structured, high- 
level assembly language for use on IBM 
360/370 mainframe machines. Some of 
the features of Pascal were evident in its 
forebear. An assignment statement had 
an ALGOL-like appearance—rl : = r 1 
+ 1; meant add 1 to register 1, and 
FOR loops used the 360 registers as 
operands and compiled directly to 
hardware looping instructions. 

With PL360, Wirth initiated segmen¬ 
tation as a device for breaking a large 
program’s code and data into smaller 
blocks. Noteworthy was his use of 360 
condition code (the 360 equivalent of 


tested the condition code, which was 
set as a side effect of a previous arith¬ 
metic operation for being less than. 

However, the language lacked a 
comprehensive set of \JO facilities and 
did not interface particularly well to 
OS, IBM's mainframe operating system. 
PL360 never fully took hold in IBM 360 
mainframe assembly language program¬ 
ming and remained something of an 
oddity in the computer world. 

In 1971, Wirth released Pascal, a 
language that gained widespread accep¬ 
tance as a didactic tool and as a devel¬ 
opment medium on the PC, but Pascal 
still lacked multiprogramming capabili¬ 
ties. When Wirth began designing Mod- 


M iOTOGRAPl \ • STEPHEN LONGLEY 







MODUIA-2 


ula, it was with the specific intent to 
implement multiprogramming, multi¬ 
processing, and separate compilation. 

In PL360 and Pascal, a program’s 
source code was compiled all at once 
(using include files as necessary). As 
Pascal programmers know, this can pro¬ 
tract development. With Modula, Wirth 
introduced separately compiled entities 
called modules. Modula’s syntax also 
eliminates some of the earlier (more 
clumsy) language constructs, such as 

IF ... THEN 
BEGIN ... END 
ELSE 

BEGIN ... END 

This particular sequence was sup¬ 
planted with the simpler 

IF ... THEN ... 

ELSE ... 

END 

Modula was implemented experimen¬ 
tally in 1975. In 1977, Wirth began de¬ 
signing an integrated programmer’s 
workstation, the Lilith. In developing 
Lilith software, Wirth’s goal was to de¬ 
vise one language that would serve 
both at high-level application and at 
low-level implementation for the oper¬ 
ating environment. In fulfillment of this 
goal, Modula-2 was born. 


A LANGUAGE APART 

In spite of its impressive heritage, Mod¬ 
ula-2 has not yet achieved widespread 
acceptance within the PC programming 
community, a fact that is probably at¬ 
tributable to die instability of some of 
the early Modula compilers. Certainly 
the language is structured to answer the 
requirements of complex programming. 

A complete Modula-2 program con¬ 
sists of one or more separately com¬ 
piled modules, each of which has two 
parts, the definition and the implemen¬ 
tation. The two usually are specified in 
separate files. The definition module 
contains the declarations of identifiers 
to be made visible to other modules; it 
resembles the header file in C, broken 
into small pieces. The hames and argu¬ 
ments of procedure calls, data struc¬ 
tures, and enumerated constants typi¬ 
cally are written into the definition 
module. All of the systems reviewed 
here compile definition modules into a 
more compact form to allow the com¬ 
piler faster access to symbol definitions. 
The details of how a particular module 
performs its task are hidden in an im¬ 
plementation module—the actual exe¬ 
cutable code for the procedure named 
in the definition module. 

To use an identifier belonging to a 
definition module, the client module 


(the module desiring such use) must 
import it. The IMPORT statement speci¬ 
fies to the compiler the name of the 
definition module in which the identi¬ 
fier to be imported is defined. The 
compiler searches for and incorporates 
any symbols named in the IMPORT 
statement into the compilation of the 
client module. This includes procedure 
headers, along with definitions of pro¬ 
cedure parameters and their types. 

The philosophy behind the formu¬ 
lation of this construction is very pow¬ 
erful. In following such a format, pro¬ 
ject designers can specify the interfaces 
between procedures first, by building 
definition modules that define types 
and procedure headers. Then, varying 
implementations of a particular pro¬ 
cedure can be substituted without ever 
changing the original definition, and 
because the implementation details are 
hidden from the other modules, no 
other module will come to rely on the 
details of implementation. 

During compilation, only those def¬ 
initions of interest to the client, as spec¬ 
ified in an IMPORT statement, are in¬ 
cluded (unlike C, which includes the 
entire global header file). To enforce 
this development style further, a Mod¬ 
ula-2 system also must check the consis¬ 
tency of definitions across the definition 



Our “TAPE CONNECTION” system 
can read and write 1/2” 9-Track 
800/1600/6250 GCR magnetic 
tapes from large computer systems. 
Our “DISKETTE CONNECTION” 
system can read and write most 
3Vz’\ 5 Va’\ and 8” diskettes. 


For. more information please call us at 602-779-3341. 


FLAGSTAFF 

ENGINEERING 

• Flagstaff, AZ 86001 


For thousands of customers world 
wide, we supplied the connection 
to get information into their PC. 

Our “SCANNING CONNECTION” 
system can scan images for use 
with desktop publishing systems, 
to text using our 
and send images to 
machines. 







BOB STANTON HAD A GREAT IDEA. 
AN HOUR LATER HE WAS TESTING IT. 




WEDNESDAY! THURSDAY 

1 FRIDAY 1 



J3SB 
"r#: 
" "“"Sr 


Sawaar- 



Appointments. Everybody 
takes them — dentists, auto¬ 
body shops, dance instructors. 

And lots of computer applica¬ 
tions need appointment 
screens. 

Bob thought that a calen¬ 
dar made a terrific graphic 
metaphor for taking appoint¬ 
ments. Simply use the arrow 
keys to pick an open date, then 
press the Enter key, and up 
pops an appointment window. 

Lucky for Bob, he’s a 
CLARION programmer, one of 

a fast growing cadre of super-productive application developers. 

With CLARION'S Screener utility, he painted a white calendar on a black back¬ 
ground. Then he drew a white-on-blue track around the page and between the days. 

He typed in the days of the week — and voila! — a calendar! 

CLARION knows that a PC monitor is refreshed from memory, so it treats a 
screen layout like a group of variables. Just move data to a screen variable, and it 
shows up on the monitor. 

Bob set up dimensioned screen variables for the days of the month and a screen 
pointer for selecting a date, and he was done. Then Screener generated the code. 

Then Bob drew the appointments window, built an appointment file, filled in the 
connecting code and tested it — ONE HOUR AFTER HE STARTED! 

Testing was a breeze. Screener doesn't just write code, it compiles your source, 
displays a screen, gets the changes, then replaces the old code in your pregram. 

So here are Bob's appointment screens. You can see the source listing to the right. 

We marked all the code Screener wrote for him. 

WHY CLARION? 

Why are application developers everywhere 
changing to CLARION? 

Because CLARION gives you all the tools 
you need: a coupled compiler and editor; screen, 
report, and help generators; an import/export 
utility; a sort/backup/restore utility; a format¬ 
ted file dump; a DOS shell — and much more. 

Because with CLARION’s comprehensive 
data management routines, records can be 
locked and files shared on Novell®, 3COM®, 

IBM® PC Net & Token Ring, Multi Link®, and most other networks. 

Because CLARION is not hardware locked or copy protected. Ryn-time systems 
are free and soon you will be able to translate CLARION into native machine code 
(.EXEs). 

And best yet, the price of CLARION vl.l is just $395 plus shipping and handling. 

You’ll need an IBM PC or true compatible with 320KB of memory and a hard disk drive. CLARION vl.l 
also comes with a 30-day money back guarantee. 

So call now and order CLARION vl.l. or ask for our 
detailed 16-page color brochure and reprints of major reviews. 


[ TUESDAY [ WEDNESDAY! THURSDAY ! FRIDAY | SATURDAY 




800/354-5444 



CLARION 

from BARRINGTON SYSTEMS, INC. 


150 EAST SAMPLE ROAD 


POMPANO BEACH FLORIDA 33064 


305/785-4555 


Copyright 1986 Barrington Systems, Inc. CLARION is a registered trademark of Barrington Systems, Inc. IBM is a registered trademark of International Business Machines Corporation 
Novell is a registered trademark of Novell, Inc. 3COM is a registered trademark of 3COM Corporation Multi Link is a registered trademark of Software Link, Inc. Dept. A9 


CIRCLE NO. 105 ON READER SERVICE CARD 































































MODUIA-2 



Coroutines are procedures that share the same thread of execution. A Modula-2 
module relinquishes control through a call to the procedure Transfer. 


modules and implementation modules. 
This ensures that the definition module 
has not changed between the time that 
the implementation for a definition was 
compiled and the time the client mod¬ 
ule imports that definition. 

Modula-2 demands strong typing of 
operands. The rules governing compati¬ 
bility during assignment operations are 
strictly enforced, but may be defeated 
by explicit coercions, called type trans¬ 
fers (which are similar to casts in C and 
free union variant records in Pascal). 
Modula-2 library routines provide type 
conversions whereby the equivalent 
value is calculated. This differs from 
coercions in which the storage that is 
occupied by the identifier is reinter¬ 
preted in the coerced type. 


Like C and Ada, Modula-2 has no 
built-in I/O constructs. In place of these, 
Wirth described a standard set of library 
modules containing procedures and 
functions (which in Modula return val¬ 
ues) that perform basic I/O and float¬ 
ing-point arithmetic. 

The language lacks a GOTO state¬ 
ment, a situation for which there are 
strong theoretical and practical reasons. 
It has been proved that any code se¬ 
quence incorporating a GOTO can be 
implemented using structured logic 
(fully supported by Modula-2) with 
identical effect. Certainly, programs that 
contain GOTO statements are more dif¬ 
ficult to debug and maintain. Eliminat¬ 
ing GOTO also makes certain tasks eas¬ 
ier on the compiler code generator. 


Modula-2 permits absolute memory 
referencing in a standard, portable way; 
however, support for CPU register ma¬ 
nipulation, address arithmetic, port I/O, 
and software interrupt invocation are 
handled differently by each of the 
Modula-2 implementations. 

One of the language’s more impor¬ 
tant capabilities is, of course, its support 
of multitasking and multiprocessing. 
However, the PC is a single CPU system; 
therefore, true multiprocessing, in 
which multiple threads execute simulta¬ 
neously on separate CPUs operating in 
the same memory address space, cannot 
take place. As a result, Modula-2 pro¬ 
cesses on the PC are limited to quasi¬ 
concurrent serial execution. 

Each of the systems reviewed here 
implements multitasking as a form of 
multiprocessing, and each offers two 
different sets of multitasking services. 
First, coroutines are procedures that 
share a single execution thread. This 
concept is presented graphically in fig¬ 
ure 1. In that figure, MODULE a inter¬ 
rupts its flow of execution by perform¬ 
ing a call to Transfer, to pass control of 
the CPU to MODULE b. MODULE b con¬ 
tinues to execute until it calls Transfer, 
which returns the flow of control to the 
point in MODULE a at which execution 
was suspended by Transfer. 

The second set of services—includ¬ 
ing a task creation mechanism and 
scheduling algorithm—delivers true 
multitasking. Most of these Modula-2 
systems provide multitasking by placing 
a runtime system on top of DOS. The 
runtime system takes control of key 
hardware interrupts, including the timer 
tick interrupt 1CH, in order to set up a 
multitasking environment. Interprocess 
controls with appropriate waiting and 
posting mechanisms are provided. 

Other library routines associate a pro¬ 
cess with a particular hardware inter¬ 
rupt and also provide the appropriate 
interrupt dismissal services. 

A program or implementation 
module that has a priority associated 
with its execution is called a priority 
module or monitor. The priority value 
is specified in square brackets alter the 
name of the module in the implemen¬ 
tation, as in the following example: 

IMPLEMENTATION MODULE 
InterruptHandler [0] 

The relative meaning of the priority 
number depends upon the Modula-2 
implementation; in most cases, the low¬ 
er the number, the higher the priority. 
When a procedure is called within a 
priority module, the current execution 
priority changes to the module’s prior- 


118 


PC TECH JOURNAL 


















































YOU ARE ABOUT TO BE SEDUCED 
BY POWER AND MONEY. 


Admit it. You’re intrigued 
with the idea of C programming. 

You may be working in BASIC, 

Pascal or Assembler now But 
you’re drawn to the power, por¬ 
tability and flexibility of C. And if 
money is what motivates you, 
imagine having it all for just $75 
with Mark Williams Let’s C.® 

EVERYTHING YOU COULD 
ASK FOR IN A C COMPILER. 

Let’s C is no mere training 
tool. It’s a complete, high quality C 
compiler. With the speed and code 
density to run your programs fast 
and lean. It won’t get you side¬ 
tracked on some quirky aberration of C; Let’s C supports 
the complete Kemighan & Ritchie C language-to the 
letter. And it comes from the family of Mark Williams 
C compilers, the name chosen by DEC, Intel, Wang and 
thousands of professional programmers. 

POWERFUL UTILITIES ARE A REAL BONUS 

Let’s C doesn’t stop with being a high performance 
C compiler. It includes utilities you’d expect to pay extra 
for-like a linker and assembler plus the MicroEMACS full 
screen editor with source code included. Having the 
source code not only allows you to customize the editor, it 
offers a close up, fully commented view of C programming 
at its best. 

REVIEWERS ARE SOLD ON LET’S C, TOO. 


create applications.” 

-William G. Wong, BYTE, August 1986. 

“Let’s C is a thoroughly professional C 
environment loaded with tools and pro¬ 
gramming utilities...another fine Mark 
Williams product.” 

-Christopher Skelly, COMPUTER 
LANGUAGE, February 1986 

“The performance and 
documentation of the $75 
Let’s C compiler rival those of 
C compilers for the PC currently 
being sold for $500... 
highly recommended...” 
-Marty Franz, PC TECH 
JOURNAL, August 1986 


ADD THE csd DEBUGGER AND CUT 
DEVELOPMENT TIME IN HALF. 

Invest another $75 and you’ve got 
Mark Williams revolutionary source lex 
debugger, csd lets you bypass clunky 
assembler and actually debug in C. 

That’s a big help when you’re learning 
C and indispensable when you’re 
programming, csd combines the 
interactive advantages of an inter¬ 
preter with the speed of a compiler, 
slicing development time in half. This is how Byte Maga¬ 
zine summed it up: “csd is close to the ideal debugging 
environment.” William G. Wong, BYTE, August 1986 




“Let’s C is an inexpensive, high-quality program¬ 
ming package...with all the tools you will need to 


Features 

• For the IBM-PC and 
Compatibles 

• Fast compact code plus 
register variables 

• Full Kernighan & Ritchie C 
and extensions 

• Full UNIX compatibility and 
complete libraries 

• Small memory model 

• Many powerful utilities includ¬ 
ing linker, assembler, archiver, 
cc one-step compiling, egrep, 
pr, tail, wc 

• MicroEMACS full screen 
editor with source 


• Supported by dozens of third 
party libraries 

• Upgradeable to C Program¬ 
ming System for large scale 
applications development 

• Not copy protected 

Let's C Benchmark Done on an 

IBM-PC/XT, no 8087. 

Program: Floating Point 

from BYTE, August, 1983. 

Exec Time in Seconds 
Let's C 134 

MS 4.0 147 


MARK WILLIAMS LET'S C 
$75 

60 DAY MONEY BACK GUARANTEE 


ARE YOU STILL RESISTING? 


If there’s any doubt that now’s the time to get your 
hands on the power of C, consider Mark Williams 60-day 
money back guarantee. You can’t lose. But with Let’s C 
and csd, imagine what you could gain. 

Ask for Let’s C and csd at your software dealer’s, in 
the software department of your favorite bookstore, 
through the Express Program at over 5500 Tandy stores 
or order now by calling 1-800-MWC-1700.* 

*In Illinois call 312-472-6659 



Mark 
Williams 
Company 

1430 West Wrightwood, Chicago, Illinois 60614 


© 1986, Mark Williams Company 

Let’s C is a registered trademark of the Mark Williams Company 
UNIX is a trademark of Bell Labs. 


MARK WILLIAMS LET’S C. ONIY «75. 

CIRCLE NO. 207 ON READER SERVICE CARD 















MODULA-2 


TABLE 1: Compiler Specifications 



INTERFACE LOGITECH 

MODULA 

PCOLLIER 

PECAN 

WORKMAN 

VERSION 

2.0a 

2.05 

1.1 

1.0 

1.0 

1.1 

PRICE 

$80.88 

$89.00 

$195.00 

$99.95 

$79.95 

$49.95 

filter/environment 

E 

F 

F 

E 

E 

F 

RESOURCES 

Disk space 

1MB 

2MB 

1MB 

1MB 

750KB 

500KB 

Environment (bytes) 

40 

80 

40 

15 

0 

15 

Minimum memory 
to compile 

256KB 

320KB 

256KB 

256KB 

128KB 

256KB 

COMPILER 

Type 

4-pass 

4-pass 

1-pass 

1-pass 

_ a 

1-pass 

Memory model 

Large 

Large 

Large 

Small 

_ a 

Small 

Complete language 

• 


m b 

• 

• 

• 

SET OF CHAR 

O 

O 

O 

O 

o 

• 

Long integer 

• 

O 

• 

• 

o 

• 

Concurrency 

Monitors 

O 

• 

• 

• 

o 

O 

Interrupts 

• 

• 

• 

• 

• 

• 

Coroutines 

• 

• 

• 

• 

• 

• 

Multitasking 

o 

• 

• 

o 

• 

• 

Low-level 

In-line code 

• 

• 

• 

• 

• 

o 

Register Access 

• 

• 

• 

o 

o 

• 

Absolute Variables 

o 

• 

o 

• 

• 

• 

Interrupts 

• 

• 

• 

• 

• 

• 

Real numbers 

In-line native 8087 

• 

• 

o 

o 

o 

o 

8087/80287 library 

• 

• 

• 

• 

• 

• 

Detect at runtime 

o 

• 

o 

o 

o 

• 

Compiler options 
Storage squeeze 

0 

• 

o 

o 

o 

o 

Runtime checks off 

• 

• 

• 

• 

• 

o 

Defeat case 

o 

o 

o 

• 

• 

o 

Listing 

o 

• 

o 

• 

• 

• 

Syntax extensions 
Predefined arrays 

0 

o 

o 

o 

o 

o 

Multiple while 

0 

0 

o 

• 

o 

o 

EDITOR 

Syntax directed 

• 

o 

_ c 

o 

o 

o 

Syntax checker 

• 

• 

_ c 

o 

o 

• 

Multiple files 

• 

• 

— c 

• 

• 

• 

Windows 

• 

• 

_ c 

• 

o 

• 

• = Yes 0 = No 

Part. = partial 

Opt. = optional feature, at extra cost 







ity. A lower priority procedure can call 
a higher priority procedure; however, a 
runtime error occurs if a high-priority 
procedure calls one of lower priority. 
When a procedure of a given priority is 
running, only a procedure of higher 
priority may interrupt and run. The pro¬ 
cedure Listen provides a mechanism to 
temporarily lower a module’s priority 
in order to allow other modules of a 
lower priority to execute. 

Modula-2 is wanting in some areas. 
Despite its claims to be a low-level 
language, for example, it places the 
BITSET type between the programmer 
and the bits that comprise a word. In¬ 
stead of logical operations, such as OR, 
AND, and XOR, BITSETs use set opera¬ 
tions to create logical bit operations. 
BITSETs themselves are not difficult to 
understand, but they do place a seman¬ 
tic layer between the system program¬ 
mer and the hardware. Another Modula- 
2 weakness is that its sets can contain 
no more than 16 members. Types de¬ 
fined as SET OF CHAR, so useful in Pas¬ 
cal text processing, are illegal in most 
implementations of Modula-2. 

As with standard Pascal, Modula-2 
makes no provision for defining vari¬ 
ables with an initial value. Although 
PL360 had the capability of predefining 
global arrays with constant data, this 
feature was not carried forward into 
Pascal or Modula-2. (Note, however, that 
the typed constants of Borland’s Turbo 
Pascal perform this service very well, 
and some Modula-2 vendors have indi¬ 
cated they may implement a similar fea¬ 
ture in future releases, as an extension 
to the Modula-2 standard.) 

The Modula-2 language definition 
is presently quite spare because most of 
Modula’s I/O and mathematical func¬ 
tions reside in libraries. Wirth de¬ 
scribed a library of basic routines in his 
report of the Lilith implementation 
(Programmming in Modula-2 , third 
edition, Springer-Verlag, 1983). These 
descriptions were not meant as stan¬ 
dards, and, indeed, are not rigorous 
enough to be considered standard defi¬ 
nitions. Unfortunately, this situation has 
led to the development of dialects that 
hinder code portability; however, the 
British Standards Institute is close to 
releasing a report that does include def¬ 
initions of basic library routines. 

SYSTEM COMPONENTS 

Since Modula-2 and its implementations 
were last reviewed, three new conten¬ 
ders have entered this compiler field, 
from ITC, PCollier Systems, and Work¬ 
man & Associates. Pecan Software ab¬ 
sorbed Volition Systems’ p-code Mod¬ 


ula-2, and enhanced it with a native 
code generator similar to that included 
with UCSD Pascal. Apart from the Voli¬ 
tion Systems’ metamorphosis, the sys¬ 
tems reviewed two years ago are still 
going strong: Logitech has greatly en¬ 
hanced its compiler and Modula Corpo¬ 
ration has altered its system to produce 
native code. Table 1 lists the individual 
compiler specifications. 

Most of these products are com¬ 
plex program development environ¬ 
ments, with debuggers, editors, and util¬ 
ities. In comparing the packages, several 
factors must be considered: 


• The compiler itself must be bug-free. 

• It must accept valid Modula-2 source 
code and reject invalid lines, and it 
must produce correct code for the 
source lines it compiles. 

• The degree of completeness of each 
compiler’s implementation of the lan¬ 
guage must be measured, including 
priority and process implementation, 
absolute variables, in-line low-level 
code, and interrupt access. 

• Any nonstandard, but convenient, 
extensions that the compiler adds to 
Modula-2 that ease the programmer’s 
burden must be assessed. 


120 


PC TECH JOURNAL 













All of these compilers implement the de facto Modula-2 standard defined by Niklaus 
Wirth in his report of the implementation on the Lilith; some offer extensions. 


• The limitations of the compiler must 
be considered—how many symbols 
are permitted and how maximum 
code block length are evaluated. 

• The compiler’s generated code should 
be of a high quality. 

• The memory model for the compiled 
code must be evaluated. 

• The compiler’s overall friendliness, 
including diagnostic messages and 
graceful recovery from syntax errors, 
is also an important factor. 

After assessing the compiler, the 
steps necessary to generate a Modula-2 
program are examined by evaluating 


the mechanism for linking the modules 
together into an executable program. 
These systems generate a variety of ex¬ 
ecutable programs: some are standard 
.EXE files, others are specific to the 
Modula-2 implementation and require 
the particular system’s loader to run. 

Each vendor’s implementation of 
Wirth’s standard Modula-2 libraries also 
must be examined: InOut includes pro¬ 
cedures similar to C’s streams; Terminal 
implements low-level terminal access 
routines; Storage contains memory-man¬ 
agement routines; and MathLibO pro¬ 
vides floating-point procedures, such as 


trigonometric functions. In his report, 
Wirth also mentioned windowing rou¬ 
tines for both text and graphics, graphic 
pointing device services, and a menu 
system. Most of these packages provide 
the basic routines Wirth described; 
some even provide the windowing in¬ 
terface used on the Lilith. 

The development tools are consid¬ 
ered last. The debuggers, program edi¬ 
tors, and cross-reference utilities are 
evaluated for their usefulness and user 
friendliness. Any additional tools, cross 
compilers or ROM packages, for exam¬ 
ple, round out the review. 

Code quality. Quantifying the “goodness” 
of compiled code is difficult. Code gen¬ 
eration itself is a mathematically unde- 
cidable problem; hence a more heuris¬ 
tic approach is needed. The compiler 
author, when writing code generators, 
faces a trade-off between code speed 
and code size in mapping processor in¬ 
structions to language constructs. In the 
8086 instruction set, many routes may 
be available to generate code corre¬ 
sponding to a particular Modula-2 lan¬ 
guage statement. Code generators that 
use the 8086 architecture to the fullest 
generate the best code. 

To write a code generator that pro¬ 
duces good code, the compiler author 
must thoroughly understand the target 
machine for which the code is being 
generated and choose the code model 
that best fits the machine. A code model 
encompasses the procedure activation 
record (the return address, parameters, 
and temporary variables of a proce¬ 
dure), standardization of calling se¬ 
quences, static data allocation and data 
representations—the framework into 
which the compiled instructions are 
placed. The appropriate choices here 
will vastly improve the speed of fin¬ 
ished product: the emitted code. (Note 
that code model should not be con¬ 
fused with memory model , a term that 
defines pointer size and the use of code 
and data segments in allocating memory 
to code and data at execution time.) 

The Intel/Microsoft standard code 
model requires building the procedure 
activation record by pushing the param¬ 
eters onto the stack (the ordering is not 
important because Modula-2 does not 
support procedures with a variable 
number of arguments), and executing a 
call instruction, which places the return 
address on the stack. Open array argu¬ 
ments (unbounded parameter arrays) 
include their lengths as part of the pa¬ 
rameter. The activation record pointer 
(in BP) is then created by pushing the 
old value of BP (the caller’s activation 
record pointer) onto the stack and 


MARCH 1987 


121 











MODULA-2 


FIGURE 2: Code Quality 


MOOULA-2 SOURCE CODE -- 

VAR i,j,k: CARDINAL; 

j := 0; k := 10000; 

REPEAT 

k := k - 1; j := j + 1; i := (k * 3) DIV (j * 5); 
UNTIL k = 0 ; 


COOE GENERATION -- 


INTERFACE LOGITECH MOOULA PCOLLIER PECAN WORKMAN 


mov 

j,o 

mov 

j,o 

mov 

j,o 

mov 

j,o 

mov 

j,o 

mov 

j,o 

mov 

k, 10000 

mov 

k,10000 

mov 

k,10000 

mov 

k,10000 

mov 

k,10000 

mov 

k,10000 

mov 

ax,k 

mov 

ax, k 

mov 

ax,k 

mov 

bx,k 

mov 

ax,k 

mov 

ax,k 

sub 

ax,1 

dec 

ax 

sub 

ax,1 

dec 

bx 

dec 

ax 

dec 

ax 

mov 

k,ax 

mov 

k,ax 

mov 

k,ax 

nop 


mov 

k,ax 

mov 

k,ax 

mov 

ax , j 

mov 

cx,j 

mov 

ax, j 

mov 

k,bx 

mov 

ax, j 

mov 

ax, j 

add 

ax, 1 

inc 

cx 

add 

ax, 1 

mov 

bx, j 

inc 

ax 

inc 

ax 

mov 

j,ax 

mov 

j,CX 

mov 

j,ax 

inc 

bx 

mov 

j,ax 

mov 

j,ax 

mov 

ax,k 

mov 

ax, k 

mov 

ax, k 

nop 


mov 

ax,k 

mov 

ax, j 

mov 

cx,3 

mov 

bx,3 

mov 

bx,3 

mov 

j.bx 

mov 

bx,3 

mov 

dx,5 

mul 

cx 

mul 

bx 

mul 

bx 

mov 

bx,3 

imul 

bx 

imul 

dx 

mov 

cx,j 

mov 

dx,j 

xchg bx,ax 

mov 

ax,k 

mov 

bx,ax 

mov 

dx,ax 

mov 

bx, ax 

push 

ax 

mov 

ax, j 

mul 

bx 

mov 

ax, j 

push dx 

mov 

ax,cx 

mov 

ax,dx 

mov 

cx,5 

push ax 

mov 

si, 5 

mov 

ax,k 

mov 

cx,5 

mov 

si ,5 

mul 

cx 

mov 

bx,5 

imul 

si 

mov 

dx,3 

mul 

cx 

mul 

si 

xchg cx,ax 

mov 

ax, j 

mov 

si, ax 

imul 

dx 

mov 

cx,ax 

mov 

dx,ax 

xchg bx,ax 

mul 

bx 

mov 

ax,bx 

pop 

dx 

mov 

ax,bx 

pop 

ax 

mov 

dx,0 

nop 


cwd 


call 

divide 

xor 

dx,dx 

mov 

cx,dx 

div 

cx 

mov 

bx,ax 

idiv 

si 

mov 

i,ax 

div 

cx 

mov 

dx,0 

mov 

i ,ax 

pop 

ax 

mov 

i ,ax 



mov 

i, ax 

div 

cx 



xor 

dx,dx 







mov 

i ,ax 



div 

bx 






nop 

mov bx,ax 
mov i, bx 


The compilers perform relatively naive code generation. Notable inefficiencies are 
FTL’s call to a function to perform division and PCollier’s insertion of NOPs. 


copying the current stack pointer into 
BP. Parameters lie at positive offsets 
from BP. Temporary variables are allo¬ 
cated on the stack below BP (that is, at 
a negative offset from BP) by subtract¬ 
ing from SP the number of bytes of 
temporary storage space required. At 
the end of the procedure, the tempo¬ 
rary variables are removed from the 
stack by replacing SP with BP, in effect 
moving SP up past the temporary vari¬ 
ables to BP. A RET instruction with a 
stack decrement value removes the ar¬ 
guments from the stack and returns 
control to the caller. 

Among these compilers, the meth¬ 
od for passing parameters to proce¬ 
dures changes depending on the code 
model. The Logitech, ITC, and Work¬ 
man & Associates compilers all pass 
their parameters on the stack. By con¬ 
trast, PCollier’s compiler passes its pa¬ 
rameters by pushing them onto the 
stack and, during the call, copying its 
parameters into the data segment of the 
target procedure. This method may per¬ 
mit faster accesses to the parameters as 


compared to finding them on the stack 
because the processor does not have to 
calculate an effective address for each, 
but it requires code to move the param¬ 
eters and also to preserve them and any 
local variables in the event that the pro¬ 
cedure is called recursively. Modula 
Corporation’s compiler pushes its pa¬ 
rameters onto the stack before calling 
the target procedure, leaving stack 
clean-up to the calling routine. 

Apart from the choice of a method 
for calling procedures, other coding de¬ 
cisions must be made. The CASE state¬ 
ment, for example, can be compiled 
into several different sequences. Most 
compilers evaluate the case labels in 
the source code and watch for blocks of 
consecutive case labels. These blocks 
are then compiled into a jump table 
that points into the code generated for 
the CASE statement as a whole. The 
case label is translated into an index 
into the jump table. To cover nonse¬ 
quential case labels, the code generated 
is typically a series of compares and 
jumps. Some compilers do not discrimi¬ 


nate between consecutive and noncon- 
secutive case labels and simply generate 
a series of compares and jumps. Gener¬ 
ating a jump table is possible during a 
one-pass compilation. 

FOR loops also can be imple¬ 
mented in several different ways. The 
current Modula-2 definition specifies 
that FOR loops cannot have a variable 
step, and Wirth’s Lilith report forbids 
changing the loop variable within the 
loop. This leaves the compiler author 
with several choices for generating the 
loop in machine code. For the most 
part, the compilers optimize on those 
loops with an increment of 1 by using 
the 8086’s LOOP instruction. Upon en¬ 
try into the loop, the compiler checks 
for degenerate cases (that is, it makes 
sure that the loop bounds are in the 
proper order and that the initial value 
for the loop index lies between them). 
Next, it calculates the number of times 
the loop must execute. The loop index 
and the loop count are then pushed 
onto the stack. The code of the loop is 
executed, and, at the bottom of the 
loop, the loop index and count are 
popped off of the stack and are up¬ 
dated. Then, the code branches to the 
top where the bounds are checked 
again, and so on, until the loop has exe¬ 
cuted the required number of times. 

Very little optimization of code was 
observed among the reviewed compil¬ 
ers. In particular, the compilers were 
not sophisticated enough to “remem¬ 
ber” that a useful register value had 
been loaded into a register for the use 
of a preceding statement. Instead, all 
necessary register values were reloaded 
each time a statement was translated to 
code, even when the proper values 
were present already. 

Figure 2 provides a practical exam¬ 
ple of the differences in code genera¬ 
tion. The figure shows a piece of Mod¬ 
ula-2 source code and lists, side by side, 
disassembled listings of the cardinal 
code generated by each compiler (see 
table 2 for complete results from the 
performance benchmarks). Actually, the 
differences among the code samples 
generated were few; Modula Corpora¬ 
tion’s package performed the fastest be¬ 
cause it did not use the stack for storing 
temporary variables; the FTL compiler 
pays a time penalty for calling a division 
subroutine; and PCollier’s compiler has 
several NOP (no operation) instructions 
and insists on storing results through 
BX, as demonstrated by the last two in¬ 
structions in its code sample. 

The linkers. Each of the six compilers 
produces a proprietary object module 
format; therefore, each system must 


122 


PC TECH JOURNAL 









The 3-in-l applications development tool 
for every Tom, Dick and Harriett 



Presenting the first database 
applications development tool 
that delivers the promises of 
4th-generation lan¬ 
guages on the micro¬ 
computer. 

It’s SIMPLE Software. 
SIMPLE stands for SYSTEM 
IMPLEMENTATION by EXAMPLE'; and 


it delivers the absolute best balance 
of power and ease-of-use. 


SIMPLER THAN EVER BEFORE. 


SIMPLE lets you jump in at any level 
of experience and unleash the full 
processing power of the PC. It has a 
totally non-procedural way of doing 
things that flattens-out the learning 
curve. You can automate everyday 
business tasks or prototype new 
applications without ever having to 
write a single line of procedural code. 

SIMPLE enables experienced 
programmers to achieve higher levels 
of productivity. And for developing 
mainframe applications, SIMPLE is 
the perfect prototyping tool—com¬ 
bining ease-of-use, speed, and high- 
quality system documentation. 

YOU GET 3-IN-l. 

l IT’S A DESIGN TOOL. 

SIMPLE allows you to quickly proto¬ 
type applications on the microcom¬ 
puter—sit right down and draw, edit, 
and specify processing logic with a 
few keystrokes. SIMPLE aids in the 
process of structured design by 
organizing development efforts in a 
building-block fashion. Experienced 
developers move quickly and easily 
from task to task. Less experienced 
users are literally guided through 
the entire applications development 
process. 

2. IT’S A RELATIONAL DATABASE 
MANAGER. 

SIMPLE offers exceptional speed per¬ 
formance. It is written in Assembler 
and incorporates a highly optimized 


B-tree data access method that elim¬ 
inates record sorting. SIMPLE also 
uses a dynamic single-record index. 
You can have an unlimited number 
of indices in any record. Each index 
may be either a single or concate¬ 
nated key. SIMPLE’s relational joins 
are easy to construct and more 
efficient to process. Joins are accom¬ 
plished dynamically at time of proc¬ 
essing and support one-to-many and 
many-to-many relationships. 

3. IT’S AN APPLICATIONS 
GENERATOR. 

It is the most practically 5 functional 
applications generator on the market 
today. SIMPLE is completely non¬ 
procedural, never forcing you back 
to procedural methods, letting you 
accomplish even the most complex 
databased applications in the most 
easy-to-use-and-understand fashion. 

A SINGLE, VISUAL 4GL 
LANGUAGE. 

Uniquely, every step in program 
development from input screens, to 
reports, to complex processing logic 
is accomplished in SIMPLE’s all-visual 
worksheets. It is fully non-procedural 
and totally picture-oriented. Design 
right on the screen, and SIMPLE’s 
built-in pattern-recognition logic 
automatically generates all the appli¬ 
cation code for you. You never have to 
leave SIMPLE’s 4GL non-procedural 
technique. 

POWERFUL WORKSHEETS. 

SIMPLE provides three powerful, 
yet easy-to-learn worksheets—a File 
Worksheet, Specify Worksheet and 
Design Worksheet. You need only 
to define a file, then SIMPLE creates 
the basic program for you. Enhance¬ 
ments are done on SIMPLE’s Design 
and Specify Worksheets. 

In the Design Worksheet, you 
simply paint or draw an example of 
the input screen or report you want. 



Company Managers like 
Tom easily develop custom¬ 
ized applications like this 
Branch Reporting System 
which reports information 
from support service calls. 
Tom now has a system which 
validates certain information 
and provides a customer his¬ 
tory to improve the branch’s 
support capabilities. With 
SIMPLE’s Specify Worksheet on 
screen, Tom simply joins data 
from four different files and 
establishes their relationship. 



Information Center Staff 
Members like Dick easily 
create new microcomputer 
applications systems like this 
Lead-Tracking System. Dick 


is able to sit down with the 
Director of Marketing and 
review the main entry screen 
developed on SIMPLE which 
shows the prospect demo¬ 
graphic information, the 
media source and date from 
which each lead was gener¬ 
ated, and the fulfillment liter¬ 
ature to be sent. 



System Analysts/Pro¬ 
grammers like Harriett 
easily prototype design 
changes while interacting 
with Department Heads. Har¬ 
riett has prototyped some 
requested changes in a Main¬ 
frame Payables System. With 
the help of SIMPLE, she has 
built a test database with 
data imported from the main¬ 
frame and is able to review 
the check-ledger report, in 
the Controller’s office on her 
portable computer. 


The Design screen may be painted 
exactly as you want using SIMPLE’s 
built-in, full-screen editor which 
offers a wide range of capabilities 
to aid you—including the ability 
to delete or insert a character or an 
entire line, move or copy blocks of 
information, lasso text or variables, 
and window to other worksheets 
in one or two keystrokes. Powerful 
specification macros are invoked pro¬ 
viding application users the ability 
to pop-up a window and browse 
through another file, interrupt data 
entry to perform another program, 
provide context-sensitive help, and 
perform conditional processing 
based on the user’s input. 

In the Specify Worksheet, you 
implement your processing logic. You 
never have to fall back to procedural 
programming to get the processing 
power you need. Range checking and 
data validation are easily implemented, 
visually. Conditional processing 
statements are quickly set up. 
Arithmetic operators, date operators, 
and a full set of string functions are 
available. You specify an example of 
how you want your data processed, 
and SIMPLE creates the program. 


A POWERFUL MENU GENERATOR. 

SIMPLE’s power gives you the easy 
flexibility to generate unlimited 
levels of user-guidance menus, as 
your applications require. There are 
limitless design options for effective 
“point-and-shoot” menu creation. 
And you have total freedom to build 
menus before, during or after devel¬ 
opment, unmatched in other systems. 

SIMPLE, SIMPLER, SIMPLEST. 

Ask for SIMPLE at your computer 
dealer. Or call us direct for the dealer 
nearest you and a full-functioning 
SIMPLE demo package with a Quick- 
Start manual for only S9-95* 

'Includes shipping and handling. California residents add sales lax. 

SYSTEM IMPLEMENTATION BY EXAMPLE is a registered 
trademark of Accuphase, Ltd. 

IBM PC is a trademark of International Business 
Machines, Corp. 


SYSTEM IMPLEMENTATION BY EXAMPLE ,u 

Published by Software Merchants Unlimited 
Software Merchants Unlimited 
2252 Fillmore Street, Suite 401 
San Francisco, California 94115 
415-567-5071 

CALL 800-8 SIMPLE 



CIRCLE NO. 120 ON READER SERVICE CARD 





















#1 Lint for MS-DOS 


MODULA-2 



The professional 
diagnostic facility for C 


PC-lint lets you zap swarms of C 
bugs and glitches at a time. 

■ Now you can uncover the quirks, 

1 inconsistencies, and subtle errors 
that infest your C programs . . . 
waiting to bite you. PC-lint finds 
them all... or as many as you 
want... in one pass. Set PC-lint 
to match your own style. 


Outperforms any lint at any price 

■ Full K&R support and 
common ANSI enhancements 
(even MS keywords) 


■ Finds inconsistencies 
(especially in function calls 
across multiple modules!) 

■ Modifiable library descriptions 
for 8 popular compilers 

■ Super fast,one-pass operation 

■ Suppress any error message 

■ Zillions of options 


PRICE $139 • MC • VISA • COD 

Includes USA shipping and handling 


i 

f 


Outside USA, add $15. In PA add 6%. 

ORDER TODAY, 

30-day guarantee 

Runs under MS-DOS 2.0 and up, and ;) 
AmigaDOS. Uses all available memory. " 

, Trademarks PC-lint (Gimpel Software). 

\ MS. MS-DOS (Microsoft). Amiga (Commodore) j 

$wm j 

j; 3207 Hogarth Lane, 
Collegeville, PA 19426 

( 215 ) 584-4261 


TABLE 2: Performance Benchmarks 


INTERFACE LOGITECH MODULA PCOLLIER PECAN WORKMAN 


Object size (bytes) 

3,196 

4,092 

5,830 

6,760 

_ a 

8,192 

Compile time 

26 

58 

45 

42 

160* 

13 

Repeat 

53 

49 

49 

88 

45 

46 

For with step 

47 

41 

59 

106 

57 

52 

Cardinal arithmetic 

148 

150 

145 

171 

83 

173 

1-D array 

154 

167 

264 

326 

261 

145 

2-D array 

122 

133 

153 

179 

137 

125 

Empty call 

107 

112 

175 

928 

545 

68 

Call with 4 

182 

178 

446 

1,065 

604 

153 

Block move 

217 

216 

300 

304 

145 

213 

Pointer chaining 

269 

200 

2,056 

498 

130 

143 

8087/80287 

20 

18 

_c 

816 

_c 

_ d 

List build 

456 

4 

7 

8 

_ e 

1 

List dispose 

460 

600 

30 

5 

_ e 

3 

Eratosthenes Sieve 

12 

14 

20 

32 

18 

12 

WriteString 

140 

126 

146 

166 

253 

224 


All times are in seconds. 

a Object size could not be determined; see text. 

b Tljese numbers are the result of dividing the actual times taken by 60. Tljis compiler’s Time function 
was undocumented—the resolution of the clock is in 60ths of a second. 
c Compiler does not support the 8087/80287. 
d A runtime bug occurred, preventing completion of the test. 
e The runtime heap was too small to complete this test. 


Much of the performance difference among compilers is related to the quality and 
tightness of the runtime support libraries and the efficiency of procedure calls. 


provide its own linkers in order to pro¬ 
duce an executable file. A linker is also 
desirable for other reasons. In a Mod¬ 
ula-2 environment, the linker should be 
able to search for the component mod¬ 
ules of a program as they are specified 
in the main module, without having to 
name them at the invocation of the 
linker. DOS LINK cannot do this. 

Among these compilers, two ap¬ 
proaches are used to link the executa¬ 
ble file: static and dynamic. Static link¬ 
ing is the method in which a linker ad¬ 
justs address references in a relocatable 
object module and optionally combines 
the module with other modules to pro¬ 
duce a single executable code file. In 
dynamic linking, portions of the execut¬ 
able image can be retained on disk and 
loaded into memory as required and as 
memory becomes available. Dynamic 
linking is similar to having procedures 
linked as overlays except that overlay 
procedures are linked for a specific 
code segment offset. Routines loaded by 
a dynamic linker can be placed any¬ 
where, and segment references are 
fixed only when the code is loaded. To 
understand dynamic linking, it is neces¬ 
sary to know how object modules are 
put together into executable programs 
that the operating system can run. 

Static linking builds an executable 
code file. This file contains the executa¬ 
ble machine instructions as well as relo¬ 


cation information for DOS; thus, in¬ 
structions that use segment addresses 
can be adjusted to point to their abso¬ 
lute locations in memory. DOS fixes 
those instructions before starting execu¬ 
tion. If the program implements over¬ 
lays, the overlay manager calls DOS to 
load overlays as required, supplying 
DOS with the paragraph address for 
segment address fix within the overlay. 

In dynamic linking (as used in 
Microsoft Windows), the executable 
image contains pointers to the names of 
routines that are to be linked when 
called at runtime. Routines to be dy¬ 
namically linked are specified in the ex¬ 
ecutable file. All static links are fixed as 
the executable file is processed by the 
linker. At runtime, the dynamic linking 
manager finds the requested routines 
and permits callers to call them. The 
fundamental difference in dynamic link¬ 
ing is that the routines are referenced 
by name, so that they can move around 
in memory from one call to the next. 

Windows implements this feature 
as tables of thunks —snippets of code in 
a fixed location that always point to the 
entry of a routine, or to a fault manager 
that has the responsibility to reload the 
linked routine. The dynamic links are 
resolved at runtime. 

Some of the implementations re¬ 
viewed provide dynamic loading as a 
means of quickly checking out a pro- 


124 


PC TECH JOURNAL 






















gram during development. In dynamic 
loading, linkable object modules are 
loaded from disk at execution time, 
with all fixes occurring while the object 
modules are being loaded. Dynamic 
linking, by contrast, is done partly by 
the linker at link time, when intraseg¬ 
ment references are fixed. Intersegment 
references, however, are not fixed until 
execution time, because until that time, 
the runtime system does not know the 
location of any given segment. 

In dynamic loading, a loader exe¬ 
cutes with the main module of the pro¬ 
gram. Procedure calls are intercepted 
by a runtime monitor that loads the 
appropriate module. As execution pro¬ 
ceeds, modules that are called are 
loaded in turn. Dynamic loading is very 
handy during development, when a sys¬ 
tem requires a half hour to link statical¬ 
ly. However, dynamic loading takes a 
toll on performance,-as evidenced by 
the PCollier subroutine call benchmark. 
When producing a final product, the 
dynamic links need to be resolved to 
eliminate the performance penalty. 

Most of the static linkers in these 
packages fix the instructions directly 
where the intermodule references are 
made. The Logitech and ITC compilers 
generate a FAR instruction, either a 
CALL or a JMP, leaving four bytes in the 


instruction’s fields for the destination 
address to be filled in by the linker. 
Workman’s FTL uses the small memory 
model, so only NEAR references are 
used, requiring only two bytes of space 
for the fix. Modula Corporation resolves 
references to a table of addresses at the 
beginning of each code segment, so 
indirect CALL and JMP instructions are 
made through this table. 

PCollier’s static linker does not fix 
the references per se, but instead per¬ 
forms a permanent dynamic link. The 
compiler and the loader assign a num¬ 
eric identifier to every procedure in the 
program. When a subroutine call needs 
to be made, the caller loads the identi¬ 
fier of the target procedure into a regis¬ 
ter and calls a module manager that 
deciphers the identifier and passes con¬ 
trol to the selected routine. As born out 
by the benchmarks, this method is slow. 

MEASURING MODULAS 

Each compiler was programmed with 
updated versions of the Modula-2 
benchmark programs written for the 
previously mentioned articles. (The 
source code for the benchmarks as they 
execute under the compilers tested is 
available on PCTECHline). Here the 
speed of the compiled code was tested 
in six specific areas: execution of sev¬ 


eral empty loops, integer arithmetic, ar¬ 
ray indexing, procedure calls, block 
moves, and pointer chaining. The clas¬ 
sic Sieve of Eratosthenes was included 
as a second test of integer arithmetic. 
The speed of each system’s libraries 
was tested in three ways: calculating a 
real number, writing to the screen, and 
creating and disposing of a linked list. 
(In order to put all of the compilers on 
equal footing, runtime checking, if avail¬ 
able, was turned off.) 

Porting the benchmark to each sys¬ 
tem required minor adjustments to the 
programs. Each language system has a 
different interface to the system clock, 
requiring a modification to the code. In 
all cases, this was a trivial change. 

The compilation speed of each 
compiler was measured as it compiled 
its benchmark program. Most measure¬ 
ments were timed by the system clock 
using batch files. Because the nature of 
their environments precluded using 
batch files, the ITC and Pecan products 
were timed using a stopwatch. The test 
machine was a standard IBM PC with 
640KB memory, a 20MB hard disk, and 
DOS 3.1 configured with 20 buffers. 

The actual compiled code was exam¬ 
ined with Microsoft SYMDEB by tracing 
through the various Modula-2 runtime 
systems to get to the benchmark pro- 


PC « MAINFRAME 

VIA 9-TRACK TAPE 

For Information Interchange-Backup-Archival Storage 

IBM format compatible 9-track, Vi inch magnetic tape is the universally accepted 
media for mainframes and minicomputers. Catamount offers Low Cost, Lightweight 
9-track Tape Subsystems for the IBM-PC/XT/AT computers which allow: 

• Reading tapes generated on mainframes and minicomputers. 

• Writing tapes to be read on mainframes and minis. 

• ASCII, EBCDIC and Binary tapes accommodated. 

• 800 bpi NRZI, 180 % 2 uo bpi PE, and 6250 bpi GCR format systems available. 

• Storage capacities up to 270 MB on a single reel. 


Systems come complete with comprehensive DOS command syntax oriented 
software and an Installable Device Driver. For OEM applications, 
the tape controller is available separately. 






VT100/VT52 & Tektronix" 

4010/4014 Terminal Emulator 

Excellent emulation and the features you want: 

-> use 4096 x 3120 resolution ■ -* 18 User-definable keys 

pp -> zoom, pan, and window plots -> capture plots and text on disk 

II •-» high resolution printer dumps -» full or half duplex 

-» choose text and plot color -> access to DOS commands 

^ -» transfer files with -» all VT100 keypad commands 

XMODEM and Kermit protocols command line editing 

II -» scroll last 4 pages of text -> fast direct screen access 

LLJ 132 column VT100 capability -*• password security 

VTEK makes your PC better than a terminal 

$150 from Scientific Endeavors 

Publication Quality Graphics for 
Scientific and Technical Applications 

|—| - linear, log, & polar plots -*• multiple levels of *Jjg en scripts 

1 1 | -> bar charts & Smith charts ■* 4096 x 3120 resolution 

' q * contour plots with labels -* zoom, pan, window plots ! 

(■| -s -» 3-D curves, 3-D surfaces -> multiple plots on a page 

Q with hidden line removal -* high resolution printer 

5 U 4 curve types, 8 markers dumps, full or half page 

»- .» H fonts, font editor - plotter support in COLOR 

1 1 16 color plots on EGA, Sigma, TeleVideo & Tecmar boards 

*F Over 100 routines can be called by your 

Q_ C program. $350. Demo $8. 

|E SOURCE INCLUDED for private use only. 

L- For DeSmet, 086, Aztec, Lattice, and Microsoft C compilers. 

^ Scientific Endeavors 

Route 4, Box 79; Kingston, TN 37763 
•jfl [615] 376-4146 

for 256k IBM and Corona PCs, DOS 2.xx,3.xx. 

1 Epson, Okidata, Toshiba, C. Itoh printers. 

NI Hewlett Packard, Houston, Sweet-P plotters. 

Corona Laser printer. IBM, IBM EGA, Sigma, 
TeleVideo, Tecmar, Hercules, Corona graphics, 
y? A compatible assembler is required. 

^ ^ THIS AD WAS MADE USING Graphic™ 


CIRCLE NO. Ill ON READER SERVICE CARD 


CIRCLE NO. 187 ON READER SERVICE CARD 


125 








MODUIA-2 


gram. Pecan’s generated code was not 
traced by SYMDEB due to the presence 
of p-code in certain library routines; 
instead, it was disassembled to get an 
idea of its quality by visual inspection. 

For the most part, the compilers 
performed comparably in the bench¬ 
marks. Subtle differences in the code 
sequences for the benchmarks explain 
some of the variation, especially in the 
empty loop test, FOR loop tests, and 
cardinal arithmetic. In evaluating the 
cardinal arithmetic and the Sieve bench¬ 
marks, the differences in the timings re¬ 


flect the differences in the code that is 
generated (refer to figure 2.) 

The indexing tests show ITC to be 
a winner—it makes the best use of the 
8086 index registers. The differences 
between ITC, Logitech, and Workman in 
this test are due to ITC’s improved reg¬ 
ister deployment and arithmetic expres¬ 
sion generation. Logitech reloads its 
segment registers needlessly during this 
test, slowing the code down. 

In evaluating the subroutine call 
benchmarks, the differences between 
ITC and Logitech are slight. Workman’s 


good score reflects the small memory 
model’s single code segment and its 
16-bit return addresses, which use less 
time in transferring control. Modula 
Corporation does not use the stack as 
effectively; it dissolves the stack “manu¬ 
ally” using five instructions after the 
CALL, rather than letting the CPU per¬ 
form the task with one instruction. 
PCollier, as stated above, uses a dy¬ 
namic linking mechanism, and copies 
its parameters from the stack into the 
called routine’s data segment. 

In performing a block move when 
assigning one structure to another, the 
fastest performers use a REP MOVSW 
instruction sequence. The PCollier and 
Modula Corporation compilers use 
MOVSB, resulting in times that were 50 
percent longer. When the results of the 
pointer chain test are analyzed, they 
result in a tie between Logitech and 
Workman’s FTL, because FTL uses 16-bit 
pointers (which are passed around 
more efficiently). Modula Corporation’s 
compiler calls a runtime subroutine to 
perform the chaining; moreover, this 
product implements pointers backward 
from the Intel standard, which means 
that the compiler cannot use the 8086’s 
pointer instructions LDS and LES. 

Logitech and ITC also did quite 
well in the floating-point test because 
they both offer in-line 8087 code gener¬ 
ation. Modula Corporation’s entry was 
disqualified when it claimed a spurious 
floating-point error. 

Apart from the Workman FTL, 
which in the small memory model uses 
only 16-bit pointers, those compilers 
adhering to the Intel code model per¬ 
formed the best: Logitech and ITC. 

The libraries were tested only 
briefly. Here the variation in perform¬ 
ance is due entirely to library efficiency, 
affected to some degree by the efficien¬ 
cy of the compiler. The wide variation 
in performance of the heap manage¬ 
ment routines (list build and list dis¬ 
pose) is curious. Without the library 
source code (provided only by ITC), it 
is difficult to evaluate further. 

Interface Technologies Corporation. Ambi¬ 
tious as it was (and in spite of the fact 
that many bugs present in earlier ver¬ 
sions have been fixed), the ITC compil¬ 
er narrowly misses the mark. ITC mar¬ 
kets two versions of its Modula-2 sys¬ 
tem, the Modula-2 Software Develop¬ 
ment System, or M2SDS, and SDS-XP. 
(See the review of M2SDS in Product 
Watch, Cole Brecheen and Charles 
Bradford, September 1986, p. 187.) Both 
products contain the same editor/com¬ 
piler; the XP version includes additional 
tools and source code files. 


The Digi-Data 2000 PC tape system reads and writes 
IBM/ANSI compatible, 9 track, 1600 bpi, V 2 inch tapes. 
It comes complete with PC controller board, cables and 
DOS software utilities. Just plug it in and run. 

The 2000 PC provides file interchange in ASCII, 
EBCDIC or binary. That means you can exchange data 
between your PC and most minis or mainframes. 

The 2000 PC also provides high speed disk backup and 
restore functions. 

For all the reasons you 
need a 9 track tape on your 
IBM PC/XT/AT, call us at 
(301) 498-0200. 



DIGI-DATA 
CORPORATION 
8580 Dorsey Run Road 
Jessup, MD 20794-9990 
(301) 498-0200 Telex 87-580 
First In Value 


In Europe contact: Digi-Data Ltd. • Unit 4 • Kings Grove • Maidenhead, Berkshire 
England SL6 4DP • Telephone No. 0628 29555/6 • Telex 847720 

CIRCLE NO. 123 ON READER SERVICE CARD 



126 


PC TECH JOURNAL 








ITC offers a rich development envi¬ 
ronment with a windowing syntax- 
directed editor/compiler. The editor is 
the first pass of the compiler. Alt-key 
combinations are used to insert syntac¬ 
tic skeletons, then blanks are filled in. 
The editor “knows” the syntax of the 
language: inappropriate statements can¬ 
not be entered, meaning that syntax is 
checked, in effect, during program en¬ 
try. The editor also controls the format¬ 
ting of text lines: the user cannot, for 
example, place two statements on a sin¬ 
gle line. Program source code is stored 
in a compressed form, thus speeding 
the compilation process. 

As radical an advance as this editor 
represents, it is a frustrating tool to 
learn—knowing where and when to in¬ 
sert a syntactic skeleton takes time to 
learn. All previous typing and program 
editing instincts must be discarded. 

The editor supports multiple, over¬ 
lapping windows, and text transfer be¬ 
tween windows. Code generation op¬ 
tions (for example, in-line 8087 code 
and runtime error checking) are set via 
a Ctrl-key combination, and remain in 
force only for the duration of the devel¬ 
opment session within a window. To 
generate object code, the user enters 
another Ctrl-key sequence and the com¬ 
piler compiles the program source 
code to object code. If an error is dis¬ 
covered at compile time, the editor is 
positioned at the offending line. 

Following a successful compilation, 
the user exits the editing window and 
calls up the linker, choosing the main 
program module just compiled from a 
menu of all compiled modules in the 
current library. The linker then pro¬ 
duces a .EXE file and a symbol map in 
the user’s DOS directory. The .EXE file 
is fairly straightforward to follow with 
SYMDEB. Care must be taken, however, 
when tracing around INT E4H instruc¬ 
tions, which ITC uses to implement 
calls for runtime services. Because the 
parameters for the calls are placed as 
data in-line below the INT instruction, 
the user must not set a breakpoint di¬ 
rectly below the INT. Control does not 
return to the location immediately fol¬ 
lowing the INT, and the debugger’s 
breakpoint instruction will be confused 
with parameter data. 

This compiler is nearly complete in 
its implementation of Modula-2, up to 
the second edition of Wirth’s book. 
Monitors cannot be created—this editor 
simply does not permit the syntax. Defi¬ 
nition modules must explicitly export 
their identifiers. Absolute variables are 
not allowed, again because the editor 
does not support the syntax. The com¬ 


piler recognizes strings as a special type 
of variable, implemented in Turbo Pas¬ 
cal fashion, by specifying a maximum 
physical length in the declaration. String 
logical length is maintained in the first 
byte of the array, and changes as the 
string is manipulated. 

The code model for the ITC com¬ 
piler follows the Intel/Microsoft stan¬ 
dard model. Parameters ara passed on 
the stack, function procedure return 
values are placed in registers, and the 
called procedure cleans up the stack on 
exit. The ITC benchmark results bear 


this out—this compiler’s performance is 
clearly in line with Logitech’s. 

For low-level issues, access to 8086 
registers is permitted by importing reg¬ 
ister variables from the SYSTEM mod¬ 
ule. The register variables can be in¬ 
cluded in assignment statements, rather 
than being accessed as record fields or 
via procedure calls. SYSTEM also pro¬ 
vides a set of routines to access the 
hardware interrupt vectors. Interrupt 
service routines written in Modula-2 can 
be attached to hardware interrupt vec¬ 
tors. In-line assembly language code is 


Lattice* Works 


LATTICE ANNOUNCES 
MICROSOFT WINDOWS 
SUPPORT IN VERSION 3.2 

Version 3.2 of the Lattice MS-DOS 
C Compiler features full support for 
Microsoft Windows—including the 
“far” “near” and “pascal” keywords. 

In addition, version 3-2 includes 
the ability to generate more than 64K 
bytes of static data and to declare 
objects larger than 64K bytes. It also 
includes improved support for ROM- 
based applications via the “const” 
data type. Version 3.2 is a significant 
release because it eliminates Micro¬ 
soft’s claimed monopoly on future 
MS-DOS C development tools. Now 
that the Lattice MS-DOS C Compiler 
supports a window interface, pro¬ 
grammers using Lattice C can avoid 
the problems caused by switching 
to a different compiler. $500.00 


LATTICE NOW OFFERS 
ENHANCED AmigaDOS 
C COMPILER 

Version 3.1 of the Lattice 
AmigaDOS C Compiler offers a new 
library with 100 more functions 
than the standard AmigaDOS C 
Compiler. What’s more, increased 
library modularity and new address¬ 
ing modes help reduce load module 
sizes by more than 20%. The new 
version also features faster pointer 
and integer math, faster IEEE floating 
point routines, direct support of the 



Lattice 

(800)533-3577 In Illinois (312) 858-7950 


Amiga’s FFP format floating point 
library, and multi-tasking support. 

With Version 3.1, Lattice has 
broken free of the reliance on the 
Amiga standard linker and object 
file format. This new release includes 
completely new expanded documen¬ 
tation, and a Lattice assembler and 
linker which remain compatible 
with previous software but allows 
professional programmers to take 
advantage of both the Amiga’s speed 
and the industry’s standardization. 

Lattice AmigaDOS C Compiler with 
Lattice’s Text Management Utilities, 
$225. Professional AmigaDOS C 
Compiler with, Text Management 
Utilities, Lattice Make Utility, Lattice 
Screen Editor, and the Metadigm 
MetaScope Debugger, $375. 
AmigaDOS C Compiler $150. 

LATTICE RELEASES NEW 
VERSIONS OF C CROSS 
COMPILER AND LINKER 

Version 3.1 of the Lattice C Cross 
Compiler to MS-DOS and version 
2.12 of the Plink86Plus Overlay 
Linker are now available for Sun and 
Apollo workstations as well as the 
DEC VAX Family of processors run¬ 
ning VMS, UNIX or Berkeley UNIX. 

All Lattice C Cross Compilers 
possess the same functionality and 
generate the same code as the native 
Lattice MS-DOS C Compiler. This 
allows users to take advantage of the 
larger systems’ speed and multi-user 
capabilities when creating applica¬ 
tions for most popular PCs. 

Contact Lattice Corporate Sales 
for details. 


TELEX 532253 FAX (312) 858-8473 


INTERNATIONAL SALES OFFICES: Benelux: Ines Datacom (32)2-720-51-61 
Japan: Lifeboat, Inc. (03)293-4711 England: Roundhill (0672)54675 
France: Echosoft (1)4824.54.04 Germany: Pfotenhaur (49)7841/5058 
Hong Kong: Prima 85258442525 A.I. Soft Korea, Inc. (02)7836372 
Australia: FMS (03) 699-9899 Italy: Lifeboat Associates Italia (02) 46.46.01 

CIRCLE NO. 160 ON READER SERVICE CARD 


MARCH 1987 


127 










MODUIA-2 


supported through the pseudo-proce¬ 
dure CODE, exported by SYSTEM. Pro¬ 
cesses are implemented only as corou¬ 
tines under ITC Modula-2. No provi¬ 
sions are made for multitasking. 

The extensive libraries include 
Wirth’s standard set. Some extra librar¬ 
ies provide screen graphics, including 
support for region clipping and coordi¬ 
nate transformation, management of the 
machine’s serial communications ports, 
and ITC’s unique file system. The per¬ 
formance of Storage is slow, but it is 
about equal to Logitech’s version. 


The XP version includes a make 
utility and a foreign object code import 
facility. The latter facility is limited to 
one code segment; it ignores FIXUPP 
object records. (FIXUPP records indi¬ 
cate operations emitted by the assem¬ 
bler’s instructing the linker to place an 
address at the designated location. For 
more about object record formats, see 
“.OBJ Lessons,” Steven Armbrust and 
Ted Forgeron, October 1985, p. 62.) 
This limitation renders the facility vir¬ 
tually useless because assembled in¬ 
structions within an imported segment 



REQUIRED READING FOR AIL 
IBM PC SYSTEMS EXPERTS 


If you're a systems expert, microcomputer specialist, or MIS/ 
DP professional working with IBM PCs, you need the compre¬ 
hensive information PC TECH JOURNAL provides 13 times a year! 

It's the only magazine that provides you with the technical 
information to help you increase the performance of your 
multi-component system. It talks to systems experts and systems 
designers in the language you understand—about the appli¬ 
cations and products you have to know about! 

As part of your annual subscription to PC TECH JOURNAL, 
you'll receive the special PC TECH JOURNAL Directory issue pub¬ 
lished in November, the most comprehensive guide and index 
to the products in the PC marketplace and PC TECH JOURNAL'S 
coverage! 

Don't leave a gap in your required reading, subscribe to 
PC TECH JOURNAL now and save 50 %! 

For faster service call Toll-Free 1 -800-852-5200 today! 


JfJgL P- O. Box 2966-Boulder, CO 80322 

Send me PC TECH JOURNAL for: SAVE 50 ( 

□ One year (13 issues) for $26.70. 

□ Two years for $53.35. 

Savings based on annual single-copy price of $53.35. 
Mr./Mrs./Ms. _-— - —5 - 

(please print full name) 

Company _, ^ -—■- —- 

Address _ ___ __——- 

City State __ Zip--- 

□ Bill me □ Payment enclosed 

Add $6 per year for postage outside USA, US currency only Please allow up to 60 
days for delivery of first issue. Annual Basic subscription price Is $34.97. 


cannot reference locations within the 
segment, such as in-line tables. 

Additional features to this package 
are a calculator, an ASCII table, a clock, 
and a file display utility. The system also 
has provisions for exporting and im¬ 
porting source code modules to and 
from DOS as ASCII files. 

The system’s documentation is 
good, although it is a bit unorganized. 
However, the tutorial in the beginning 
of the manual is a fine introduction to 
Modula-2 programming. 

The ITC system incorporates some 
novel program development ideas. The 
editor was one of the first syntax- 
directed editors used for development 
on the PC, and it is very efficient. The 
compiler itself is reasonably fast and 
compact. Yet, with all it has going for it, 
this system has problems. The editor 
hangs occasionally, without warning or 
apparent reason, and the compiler 
sometimes generates incorrect code. 

For example, the statement 

Boolean := (int > 0); 

generates erroneous code. Moreover, 
the compiler yields an “Expression too 
complicated errors” message for the 
most trivial of expressions, such as in 

d := a*b + c*d; 

which generates an error when the four 
variables are defined as LONGINTs. 

FOR loops with variable steps, ille¬ 
gal in Modula-2, are accepted by the 
compiler and then generate bad code. 
Changing the FOR loop index variable 
is not ignored. (All of the other compil¬ 
ers generate code sequences that pre¬ 
serve the loop variable and restore it 
with each iteration of the loop.) For 
example, for the statement 

FORi := 1 TO 10 BY k DO 
j := j + 1; 

END; 

the compiler accepts this code, which is 
itself an error, because no FOR loop 
can have a variable step. (The k was 
previously declared an integer variable.) 
The disassembled code is as follows: 

top: cmp i,10 ;check loop bounds 
ja out 
mov ds, cs:[0] 

;get the module’s data segment 
mov ax,j 
add ax,l 

mov j,ax ;j := j + 1 
add i,4 

TERROR! ‘4’ was pulled out of the air 
jmp top 

In the line where the step value is 
added to the index value i, the code 


128 


PC TECH JOURNAL 






adds constant value 4 to it. The 4 was 
not specified in any way in connection 
with the loop, and it is unclear how the 
compiler decided to use it. If it had 
chosen a 0 instead, the code would 
have gone into an endless loop. 

In spite of these seemingly major 
problems, the M2SDS package is selling 
well in Europe, where it was not avail¬ 
able in its earlier, more flawed, re¬ 
leases. Perhaps in time the product will 
be improved and make a comeback in 
the United States as well. 

Logitech, Inc. Logitech’s Modula-2 ap¬ 
pears to be the clear leader in the Mod¬ 
ula-2 compiler field (in spite of the fact 
that it, too, had a number of bugs in its 
early releases). Also, before its several 
components were unbundled, Logi¬ 
tech’s compiler was an expensive tool 
for much of the user audience. (See the 
review of Logitech’s “Modula-2/86” in 
Product Watch, John T. Cockerham, Sep¬ 
tember 1986, p. 187.) 

The Logitech system consists of a 
compiler, a windowing editor, a linker, 
and a .EXE file creation utility. The 
compiler is available in two forms: 
overlaid and fully linked. The overlaid 
compiler runs in 256KB, and is avail¬ 
able with or without 8087/80287 numer¬ 
ic coprocessor support. The fully linked 
compiler requires 512KB of RAM, but 
allows more symbols and code space 
and includes support for an 8087/287 
and the 80186/286, a make utility, a win¬ 
dowing environment, and a source-level 
runtime debugger. Other optional fea¬ 
tures to the product are a text window¬ 
ing library, a ROM package, and a 
Turbo-Pascal-to-Modula-2 translator. 

The Logitech editor is an impres¬ 
sive one, supporting multiple windows 
and files. This editor has some aware¬ 
ness of Modula-2 syntax; it knows, for 
example, that it must indent after cer¬ 
tain statements have been entered onto 
a line. In addition, a syntax checker that 
can be invoked from the editor via a 
function key reports lapses in indenta¬ 
tion style. Both the compiler and linker 
are invoked via a function key as well, 
and the compiler passes error location 
information back to the editor for posi¬ 
tioning of the cursor. 

This system’s source code files 
compile into .LNK files that the linker 
processes into .LOD files. These .LOD 
files can be converted by a utility into 
.EXE files; otherwise, the user can call 
the runtime system M2.EXE to load 
.LOD files and execute them. The com¬ 
piler generates listing files by the user 
setting a switch on the command line. 

In addition, .REF files are produced for 
use by the debugger. 


The code model appears to be an 
implementation of the full Intel/Micro¬ 
soft standard. Procedure activation 
records are implemented through the 
use of ENTER and LEAVE instructions 
when compiling to an 80186/286. The 
code is very fast, as evidenced in the re¬ 
sults for the benchmark tests. In look¬ 
ing at the code using SYMDEB, how¬ 
ever, the compiler appears to reload its 
segment registers more often than is 
necessary simply because the compiler 
has no mechanism to detect that correct 
values are already there. 


Both versions of this compiler sup¬ 
port the definition of Modula-2 as out¬ 
lined in the second edition of Wirth’s 
book; the third edition was published 
after the compilers were released. 
(Logitech is reportedly preparing an up¬ 
date to meet this most current specifica¬ 
tion.) Even so, the only significant dif¬ 
ference between the compiler and the 
current definition of the language is the 
compiler’s requirement that definition 
modules explicitly export their identifi¬ 
ers. The system’s low-level facilities are 
complete, with absolute addresses for 


A Contradiction! 

Running Under PC DOS 

>750 million bytes formatted in two volumes for the "Eagle" 

(one volume/drive)...M2361A can hold 552MB/volume...data transfer 
rate up to 2.4MB/sec....data access time - I8ms/drive...variable interleave 
capability...partitioning possible...drives built to mainframe specifications 
with mainframe reliability...greater than 20,000 hours MTBF. 

For further information contact: 

Upper Bound Micro ^ 

18 Elizabeth Street, W. Conshohocken, PA 19428 
(215| 825-0505 FAX (215) 828-8618 

The "Eagle" is a trademark of Fujitsu America, Inc. 

PC DOS is a trademark of IBM. 




MARCH 1987 


CIRCLE NO. 169 ON READER SERVICE CARD 


129 

























MODULA-2 


variable, interrupt access, in-line code 
generation, and CPU register access. 

Logitech’s libraries are quite exten¬ 
sive and provide binary-coded-decimal 
(BCD) support, interrupt handling, DOS 
services, random file I/O, a mouse in¬ 
terface, multitasking, and serial device 
handling. Notably absent, however, is 
screen graphics support. 

This package offers the user three 
options for debugging. First, in the ba¬ 
sic system, an execution error simply 
produces a RAM dump. A postmortem 
debugger interprets the RAM dump and 
pinpoints the error. Second, the library 
module Debug, if imported, traces the 
stack. Finally, a powerful runtime de¬ 
bugger is also available. 

The Logitech documentation is well 
done. The manual is now perfect-bound 
and includes a brief tutorial on the lan¬ 
guage. The index is complete, and the 
definitions of the libraries are reprinted 
in the manual for easy reference. In 
short, this is a very good compiler and 
a leader in this field, but it is in need of 
some minor burnishing. 

Modula Corporation. For a long time the 
source of a p-code (pseudocode) imple¬ 
mentation of Modula-2, this company 
has recently begun to produce a native 
code implementation for the PC, called 
PC Modula-2. The system includes a 


compiler, a loader, and a linker; a win¬ 
dowing, source-level debugger is avail¬ 
able at extra cost. However, an editor is 
not offered with this product. 

The compiler is invoked from 
DOS; its output is a .RLX file containing 
the relocatable object code, and a .RFC 
file with information for the debugger. 
The compiler error messages are terse, 

L its code model, the Mod¬ 
ula Corporation compiler 
limits procedure parameter 
lists to 16 words, which can 
cause some problems. 


but adequate. The user can control run¬ 
time checking through the use of 
switches on the command line. 

The language that is implemented 
by this compiler conforms to the third 
edition of Wirth’s report: definition 
modules do not have to export their 
identifiers explicitly, priority modules 
and multitasking are available, and 
strings are not a predefined type of the 


language but are arrays of characters 
terminated by a null character. 

This system’s low-level facilities 
include CODE procedures (which are 
short in-line assembly language rou¬ 
tines), implementation modules written 
in assembly language, absolute address¬ 
ing, and I/O device management. Note, 
however, that the assembly language- 
level implementation modules must fol¬ 
low a rigid format in order for the 
linker to load them properly. 

The code model for the Modula 
Corporation compiler is not the Intel/ 
Microsoft standard. The compiler limits 
procedure parameter lists to a total of 
16 words in length, which can be a 
problem—open arrays require 3 words 
of parameter space for the address and 
the size of the array, VAR parameters re¬ 
quire 2 words for the address, and val¬ 
ue parameters require as many words 
as their base types are large. 

This Modula-2 compiler does not 
use the RET instruction to return from a 
subroutine. Instead, the compiler emits 
an indirect jump instruction, taking its 
destination address from the stack at 
the point where the CALL instruction 
had placed the return address, and leav¬ 
ing the calling routine to clean up the 
stack. The performance overhead ex¬ 
acted by this process is evidenced in 
the procedure call benchmarks. 

The results for these tests can be 
puzzling without the knowledge that 
this compiler was ported from another 
machine and, more significantly, that 
the chosen code model underemploys 
the instruction repertoire of the 8086. 
This is evidenced by the fact that the 
Modula compiler stores its pointers 
with the segment portion in the low- 
order word—in reverse of the Intel 
standard. This prevents the compiler 
from using the pointer loading instruc¬ 
tions, LDS and LES. 

The generated code is also ineffi¬ 
cient at times. In setting up a CASE 
statement, for example, the address of 
the selected code is loaded from the 
jump table into a register and a jump is 
taken relative to the register rather than 
out of the table itself. 

However, the balance of its scores 
in the benchmarks are very good. This 
compiler turned in the shortest time for 
the cardinal arithmetic test. (During the 
real number test, though, the library 
halted execution of the benchmark with 
an error message claiming an attempted 
conversion of too large a floating-point 
number into an integer. It is unclear 
why sqrt(sin(ln(pi))) would require an 
integer conversion at all, even for an 
intermediate value.) 


ONE TOOL DOES IT ALL! 


dszm 




53/1/1110 NOAJBOV 




OAONF 

SN'Ni-H sn_^ $79.00 


cccocc c _ 



RECLAIM 

$49.95 

UNFORMAT 

$??.?? 


You could pay $288.85 or ONLY $99.00 

To Order Call 800-523-0258 

Paul Mace® 

SOFTWARE^/ 


123 N. First St., Ashland, OR 97520 


Disk Optimizer. Norton Utilities. 
Lighting, and DS-Recover are 
trademarks of Soft logic, Peter 
Norton Computing. PCSG, and 
Design Software. 


130 


CIRCLE NO. 101 ON READER SERVICE CARD 


PC TECH JOURNAL 
































The libraries for this compiler in¬ 
clude Wirth’s standards and are other¬ 
wise comprehensive. In addition, the 
system supports multitasking, string 
management, graphics, and long sets 
(those with 65,534 elements). The de¬ 
bugger is an interesting one, with multi¬ 
ple screens that permit the user simul¬ 
taneous examination of the stack, global 
variables, and registers. The Modula 
Corporation documentation is very 
thorough and well indexed. 

PCollier Systems. This consulting firm has 
produced a very compact implementa¬ 
tion of the language. The Modula-2PC 
package includes compiler, editor, and 
linking loader. The editor is a standard 
full-screen utility with its own set of 
keystroke commands that are unlike any 
other and do not use the PC’s function 
keys. It communicates with the com¬ 
piler through the DOS environment; 
error information is passed back to the 
editor for cursor positioning. 

The language implementation is 
complete as specified in the third edi¬ 
tion of the language report. The WHILE 
statement is extended to permit mul¬ 
tiple Boolean expressions and statement 
sequences. For example, in 

WHILE 

(negative) DO j := j -I- 17 I 

(i > 0) DO j := j — 17 
END 

the control sequence loops through 
conditional expressions until the first 
true expression is encountered. Its asso¬ 
ciated statements are executed, then 
control returns to the top of the WHILE 
loop. The loop terminates when all of 
the conditional expressions are false. 

PCollier’s low-level facilities are 
adequate. Its CODE procedures are 
macros for small sequences of machine 
instructions. Once defined, these CODE 
procedures can be invoked simply by 
naming them; they will be expanded 
into in-line code at that point in the 
program. The CODEGEN pseudo-proce¬ 
dure, however, is closer in concept to 
Turbo Pascal’s INLINE statement, and 
permits the generation of lengthy as¬ 
sembly language sequences. External 
.COM files can be included in the ob¬ 
ject code using the LOADASM proce¬ 
dure. Register access in Modula-2 state¬ 
ments is not allowed. Software inter¬ 
rupts can be called through a proce¬ 
dure imported from the DOS module. 

The real number support provided 
by the system depends upon which of 
two included versions of the loader is 
used to create the program: one uses 
the 8087 coprocessor, the other does 
not. The 8087 “detect or emulate” deci¬ 


sion cannot be postponed until run¬ 
time. The loader will dynamically link 
to imported modules as they are called; 
it also can generate a .EXE file. 

The code model for this compiler 
differs from the Intel/Microsoft stan¬ 
dard. First, the process of calling proce¬ 
dures is handled by a global module 
manager. The manager is passed a key 
for the requested module. The targeted 
procedure is located and control passed 
to it. If the targeted procedure is not 
present in RAM, it is located on disk 
and loaded. Second, arguments are 
passed on the stack to the module man¬ 
ager, which then removes the parame¬ 
ters from the stack and places them into 
the data segment for the routine. If a 
recursive call is made, the previous in¬ 
vocation’s data segment is preserved 
and the current set of parameters is in¬ 
stantiated. This is not very efficient, as 
the benchmarks show. 

The code generated by this compil¬ 
er for handling Boolean expressions in¬ 
side IF statements is different from 
most compilers. This generated code 
calculates a Boolean value for the ex¬ 
pression and tests it against TRUE, 
jumping on the result of the compari¬ 
son. The calculation requires one set of 
jumps; the test is an additional set. This 
is a less efficient method than that of 
the other compilers, which emit direct 
comparisons and jumps. 

PCollier’s arithmetic code is also 
less efficient than that of the others. 
Modula-2PC uses the 8086’s BX register 
for interfacing to RAM. Note (in figure 
2) the two MOV instructions at the end 
of the code: one moves the result into 
BX, the other moves BX into RAM. 

The libraries for this compiler are 
complete and include a nice screen, 
window, and menu management mod¬ 
ule. The Terminal module, however, 
does not follow the standard: Termi- 
nal.Read takes its first input from the 
DOS command line. Coroutines are 
supported, but multitasking is not. 

Clearly, the strength of the PCollier 
implementation is its documentation. 
The book is exceptionally well written 
and indexed. With its fine tutorial, it 
easily could retail as an introduction to 
Modula-2 on its own. 

Pecan Software Systems, Inc. This company 
acquired Volition Systems and subse¬ 
quently upgraded and rereleased Voli¬ 
tion’s Modula-2 product under its own 
label. Pecan Modula-2 operates in the 
Power System environment, Pecan’s 
new name for the UCSD (and later Sof- 
Tech) p-System, a virtual machine envi¬ 
ronment that has existed since the mid- 
1970s. This compiler is invoked from 


PROTECT 
YOUR COPIES 
Of 


nn 


ILJ 


m 

OURNA 


Make your collection of PC TECH 
JOURNAL a handsome addition 
to your office or home—and pro¬ 
tect and organize them for easy 
reference! 


PC Tech Journal Magazine 
Binders and cases are made of 
durable luxury-look leatherette 
over quality binder board. Custom 
designed for PC Tech JOURNAL, 
every order receives FREE transfer 
foil to mark dates and volume 
numbers. 

FOR FAST SERVICE CALL 
TOLL-FREE 1-800-972-5858 


MAGAZINE BINDERS 



Hold your 
issues on 
individual 
snap-on 
rods. $8.95 
each; 3 for 
$25.75; 6 for $48.75. 


OPEN BACK 
CASES 

Store your copies for 
individual reference. $795 
each; 3 for $22.95; 6 for $43.95 



TB10! P.O.Box 5120 
OURNAL Philadelphia, PA 19141 

Please send □ Binders □ Cases Quantity_ 

Payment enclosed $_* Add $1 per order for 

postage & handling. (Outside USA, add $2.50 per unit 
ordered, US currency only.) 

Charge my: 

□ Amex □ Visa □ MC (Minimum order $10.) 

Card No-Exp. Date_ 

Mr./Mrs./Ms._ 

please print full name 

Address_ 

City__ 

State_Zip_ 

*PA residents add 6% sales tax. 


MARCH 1987 


131 






MODULA-2 


the Power System and emits either 
p-code or native 8086 code. The p-code 
is threaded code for execution by the 
Power System’s virtual machine inter¬ 
preter. Pecan has ported the Power Sys¬ 
tem and its virtual machine to several 
different computing environments. 

The Power System runs above 
DOS, but does not use DOS for its file 
operations. File I/O is performed direct¬ 
ly by the Power System, using an anti¬ 
quated sector system that requires allo¬ 
cating a given number of sectors to a 
file at the time of a file’s creation. De¬ 


leting a file on a Power System virtual 
volume leaves a “hole” of unused sec¬ 
tors the same size as the deleted file. 
When many create and delete cycles 
occur on a volume, it can become ex¬ 
tremely fragmented, and free sectors 
need to be collected into a single block 
by an operation called Krunch. 

The editor is a fairly standard text 
entry model. Provisions are included 
for editing multiple files, with text 
transfer between files, function key 
macros, and automatic indentation. This 
editor can perform source code log- 



Virtually all mainframe and mini 
systems already have 16QQ BPI 
V 2 ' 1 9 track tape. The Tape Linx 
subsystem provides the necessary 
connection for PC users. 


Tape Linx moves most data base 
information from mainframes and 
translates it automatically into a 
format readable by the PC. 


Tape Linx provides the means for 
decentralizing corporate informa¬ 
tion processing by allowing branch 
offices to access central data 
resources. Because no physical 
link is ever created with the main¬ 
frame, Tape Linx is non-invasive. 


Overland Data, Inc. 

Answers on Tape 

5644 Kearny Mesa Road 
San Diego, CA 92111 
[619] 571-5555 
754923 OVERLAND 


9 Track tape support for 
personal computers 
XENIX and MS-DOS support 
A standard data interchange 
medium for government and 
industry 


The Tape Linx package includes 
DEPOT™, a data interchange 
utility; FLASHBAK™, a high¬ 
speed, file-oriented back-up utility; 
and other MS-DOS programs. 

Overland Data’s professional 
technical staff provides telephone 
support for all ODI products, and 
will be happy to discuss your 
specific application requirements. 

XENIX and MS-DOS are Registered 
Trademarks of Microsoft Corp. 


CIRCLE NO. 185 ON READER SERVICE CARD 


ging, which automatically inserts a com¬ 
ment into the source file, containing 
the date and a line of explanation for 
changes to the program source code. 

Unlike UCSD Pascal, Pecan’s Mod¬ 
ula-2 editor does not have an interface 
to the compiler; therefore, the user 
must save the work in progress and exit 
the editor before invoking the compil¬ 
er. Compile-time errors are not com¬ 
municated to the editor for cursor posi¬ 
tioning in the source file. 

The compiler accepts standard 
Modula-2 syntax according to the third 
edition of Wirth’s report, including 
module priority. Errors are correctly 
spotted and the associated messages are 
informative. Compiler options are em¬ 
bedded as comments within the text of 
the module being compiled. 

Pecan has added several extensions 
to the Modula-2 language in this imple¬ 
mentation, mostly to accommodate fea¬ 
tures of the Power System. BCD vari¬ 
ables are supported and are defined us¬ 
ing the predefined type PACKED. Func¬ 
tion procedures may return any type as 
a result, including RECORDS. 

However, some restrictions cloud 
the differences between CARDINAL and 
INTEGER variables. For example, cardi¬ 
nal division cannot be performed when 
an operand is greater than 32,767. Simi¬ 
larly, case labels that are of type 
CARDINAL cannot exceed 32,767. 

This system’s low-level facilities are 
geared toward p-code: no direct access 
to the host system is allowed. The user 
can generate p-code routines using sev¬ 
eral pseudo-procedures. 

In its default mode, this compiler 
directly emits p-code into Power System 
.CODE files for implementation and 
program modules. Definition modules 
compile to .SYM files, which provide 
the necessary symbolic information to 
the compiler when the module is im¬ 
ported. The native code generator is in¬ 
voked by setting a compiler directive 
option. Configuring the Power System 
for an 8087 requires changing the name 
of die default code generator and 
Power System runtime library files. 

Once so configured, the 8087 is re¬ 
quired to be present for a floating-point 
program to run; otherwise, the program 
will hang die computer. 

The performance of the native 
code generator can be seen in the 
benchmark results and in figure 2. This 
compiler, like the PCollier product, 
actually calculates a Boolean value for 
simple comparison expressions, then 
tests the state of the Boolean value, 
rather than simply comparing the two 
operands and branching on the state of 


132 


PC TECH JOURNAL 





UnleashThe Most Powerful 
DevelopmentTbols 

OnThe Planet DOS. 


UNIFY DBMS/DOS.The UNIX Worid Leader 
Brings ANewDimensionTb DOS Application Development. 


What happens as the DOS world expands? As a 
new generation of hardware takes over? As networking 
becomes more important? The potential is enormous. 
But until now, the tools to achieve it have been limited. 

Now a leader from another world unleashes that 
potential: UNIFY® DBMS. The leading relational 
DBMS in the UNIX™ world. And now, the most 
advanced set of application development tools in the 
DOS world. 

With UNIFY DBMS, DOS developers have new 
power to build more sophisticated applications than ever 
before possible. 

The power to write high performance “C” 
programs that will access the data base, using 
Unify’s Direct Host Language Interface. 

The power of an industry standard 
query language—SQL. 

The power of unmatched speed in pro¬ 
duction applications. Only UNIFY DBMS is 
specifically engineered for transaction through¬ 
put. With unique performance features like 
PathFinder™ Architecture multiple access meth 
ods, for the fastest possible data base access. 

See Us At 

UniForum 

January 20 - 23, 1987 
Washington Convention Center 
Washington D.C. 






The power of comprehensive pro¬ 
gram development and screen man¬ 
agement tools. Plus a state- 
of-the-art fourth generation 
report-writer. 

What’s more, with UNIFY 
DBMS, the potential of networked 
applications becomes a reality. Unlike 
DBMS systems which were originally 
single-user (and which have a long stretch 
to accommodate more users), UNIFY DBMS 
is a proven multi-user system. 

And because UNIFY DBMS/DOS is 
the best of two worlds, it offers you the most 
powerful benefit of all: DBMS applications that 
can grow as your needs grow. From single user 
DOS. To networked DOS. To multi-user UNIX. 
All without changing your applications. 

Call the Unify Information Hotline 
for our free booklet: The New DOS World. 
(503) 635-7777 


uniFy 

CORPORATION 

4000 Kruse Way Place 
Lake Oswego, OR 97034 


© 1986 Unify Corporation. UNIX™ is a trademark of AT&T Bell Laboratories. 
CIRCLE NO. 156 ON READER SERVICE CARD 




MODULA-2 


the flags. For example, the code gener- 


ated for 

IF i > 0 THEN ... is 

xor 

ax,ax 

mov 

dx,i 

cmp 

dx,0 

jnz 

notzero 

inc 

ax 

notzero: 


shr 

ax,l 

jc 

truepart 

jmp 

falsepart 

truepart: 



The result in inefficient code, due to 
the fact that the native code generator is 
directly translating individual p-code 
operations into 8086 machine code. The 
native code generator never “sees” the 
source code and thus is unable to gen¬ 
erate code specific to the larger pro¬ 
gram context, such as an IF statement. 

The Pecan libraries provide most 
of the standard Modula-2 functions, and 
multitasking and coroutines are sup¬ 
ported. Decimal arithmetic on BCD 
variables is an additional feature. Note 
in the benchmarks that this system ran 
out of heap space when executing the 
linked list creation test. 

The porting of the benchmark pro¬ 
grams was more difficult on this system 
than on any of the others. Its Time 


function is undocumented; but experi¬ 
mentation revealed that the resolution 
of the clock was in 60ths of a second. 
Thus, the benchmark times are the re¬ 
sult of dividing by 60 the actual times 
turned in by the compiler. 

The Pecan documentation is good, 
and the index is thorough, but it pre¬ 
supposes a working knowledge of Pas- 

C learly, a restrictive aspect 
of Pecan Modula-2 is the 
Power System. Although truly 
portable, it is annoyingly 
different from DOS. 


cal. Although the coverage of the librar¬ 
ies is adequate, some lapses undercut 
its overall effectiveness. The format of 
Time and a description of the actual 
representation of strings are absent. 

The worst aspect of working in Pe¬ 
can Modula-2 is the Power System itself. 
Although truly portable, it is annoyingly 
different from DOS. For example, the 
screen clears, rather than scrolls, be- 


DOUBLE 

YOUR STORAGE CAPACITY 


The new PERSTOR 200 
Series Double Capacity 
Controllers increase 
the storage capacity of 
your ST506/412 Win¬ 
chester hard disks by 90% or more. 
Advanced RLL encoding technology is 
used to increase data transfer rate to 9 
and 10 megabits per second, and a 56 


bit error correction 
code is used to assure 
data integrity. What’s 
more, it works with both 
RLL and MFM drives 
with plated or oxide media* 

To place an order or become a dealer 
call (602) 948-7313. 



PERSTO T? 

Sensible solutions for your hard disk problems. 


Systems and Software, Inc. 

7825 East Redfield Road 
Scottsdale, Arizona 85260 


*call for specific drives. 


CIRCLE NO. 231 ON READER SERVICE CARD 


tween programs. This inhibits the 
screen from acting as short-term storage 
for program results across several pro¬ 
gram invocations. The user interface is 
about as clumsy as that of DOS—one- 
character commands—but without 
many of the redeeming features of 
DOS, such as default path specifications, 
command line parameters to programs, 
and automatic file maintenance. 

The strength of the Power System 
lies in the diversity of machines to 
which it has been ported. With Pecan 
Modula-2, true portability can be 
achieved if the programmer limits him¬ 
self to the high-level features of the lan¬ 
guage. For low-level applications, the 
p-code degrades program performance 
and limits programmer options. 

Workman & Associates. The Australian- 
born FTL (faster than light) compiler is 
distributed in the United States by 
Workman & Associates. This powerful 
compiler comes with a useful editor, an 
assembler, and a linker. A memory-resi¬ 
dent debugger is an added feature. 

As in Turbo Pascal, the compiler 
and the editor can both load and re¬ 
main resident during an editing session. 
The compiler retains .SYM symbol table 
files in memory, speeding compilation. 
(.SYM files are the result of compiling a 
definition module.) 

The editor itself can be configured 
to use either Micropro’s WordStar or 
Unipress Software’s Emacs control key 
sequences for commands. The user can 
set up keyboard macros, but language 
constructs cannot be inserted by Alt-key 
combinations, as they can be in the ITC 
editor. The editor is limited to three 
fixed-size windows containing up to 
three simultaneously opened files. The 
user can set compiler options from a 
screen in the editor, and the compiler 
can be called up quickly. The linker is 
easily accessed from the editor as well, 
but promptly runs out memory in all 
but the largest machines. 

The compiler is (as claimed) very 
fast, with a compile time benchmark of 
13 seconds. This one-pass system gener¬ 
ates code for a small memory model: 
64KB of data and 64KB of code. The 
compiler output is in the form of .SMR 
files, which are fed to the linker. The 
code it generates is reasonably tight, 
and the times for the FTL compiler in 
the benchmarks reflect the advantages 
of the small memory model. The code 
model is similar to Intel/Microsoft: 
Parameters are pushed onto the stack 
from left to right. The called procedure 
cleans up the procedure activation re¬ 
cord. Functions return their results on 
the stack rather than in registers. CASE 


134 


PC TECH JOURNAL 







that dorituseournew 
_ VEGADeluxe EGAcard 




Pretty soon, this 4 

might become standard m 

computer equipment. 

Unless, of course, our VEGA Deluxe gL 

card does first. 

And that’s a distinct possibility. After all, this short-card 
video adapter offers 37% higher screen resolution than standard EGA cards. 

Visualize it: your existing software sharper and clearer by more than a third. 
Programs like Lotus 1-2-3 and Symphony, with 132 columns and 43 lines. Microsoft 
Windows in 640 x 480, too. And AutoCAD. As well as EASYCAD, EGA Paint, GEM, 
Dr. Halo II, InA*Vision, Windows Draw, Windows Graph, and much more. 

In fact, with all this information on the screen, there’s only one thing there’s less of. 
Strain on your eyes. 

That’s because the VEGA Deluxe gives you both 640 x 480 and 752 x 410 reso¬ 
lution. (Of course, for more than 640 x 350, the VEGA Deluxe requires a Multisync® 


or equivalent.) 

The VEGA Deluxe is also compatible with every other 
video standard: EGA, CGA, Hercules and MDA. And when 
used with a compatible monitor, it automatically selects 
which mode is right for your software’s needs. 

At Video Seven, we’ve sold over 200,000 EGA cards 
to people who’ve seen the difference. If you’d like to see the 



difference for yourself, just call 1-800-238-0101 for the name of the Video Seven 
dealer nearest you. (In California, call 1-800-962-5700.) 

The VEGA Deluxe. It puts everything in proper r 



Video Seven Inc., 550 Sycamore Drive, 
Milpitas, CA 95035. 


[ DEO WS EVEN 

We make a dear difference. 



zi-fr . , Ar , .j , t vwuiyuuux, \ i aim ±\ia ouu.yyuia. 3 mu, — ju'igudi ivcbedxt.ii v/urp., ui. ndiu—rneaid v^yuemeucs, invision, 

Windows Draw, Windows Graph-Micrografx Inc.; Registered trademarks: Video Seven-Video Seven Inc., Lotus 1-2-3, Symphony - Lotus Development Corp., Microsoft-Microsoft Corp. 
Video Seven reserves the right to change specifications without notice. 


CIRCLE NO. 204 ON READER SERVICE CARD 







MODULA-2 


statements are implemented as a series 
of comparisons and jumps—a result of 
the compiler being one-pass. 

FTL provides runtime checking 
facilities that can be disabled through 
the use of a compiler switch. The com¬ 
piler will supply additional information 
to the linker for creating a procedure 
map that contains offsets of procedures 
into the generated .COM file. 

This compiler would not accept a 
priority specification for program mod¬ 
ules. It did, however, accept and com¬ 
pile correctly several lines of Modula-2 


that were not separated by semicolons. 
The compiler checks several environ¬ 
ment strings governing the search 
paths, default extensions, and the direc¬ 
tories to place output. 

An assembler is included for gen¬ 
erating low-level routines. The assem¬ 
bler generates code for the linker and 
supports pseudo-operations that allow 
the assembled module to import sym¬ 
bols from FTL .SYM files. No facilities 
are available for generating in-line ma¬ 
chine code. The linker optionally dis¬ 
plays a symbol map to the console. The 


user must redirect linker output in or¬ 
der to capture this map. A .COM file is 
produced, which is very easy to trace 
through using SYMDEB. 

ADDRESS variables, WORDS, and 
BYTEs are available from the definition 
module System. The library module 
MSDOS contains the routines for ac¬ 
cessing the system BIOS interrupts, and 
calling for DOS services. Registers are 
supplied to these routines as a record. 
Other FTL library modules include 
Storage, for heap management; Pro¬ 
cesses, for multitasking and process 
synchronization; Streams, for file 
streams; Terminal, for terminal I/O; 
Command, for command-line process¬ 
ing; CallProg, for program spawning; 
Maths and Solve, for floating-point oper¬ 
ations; GetEnvName, for environment 
strings; and Strings, for string manipula¬ 
tions. The performance of the heap 
manager seems very impressive, but it 
has very little heap to manage. 

The two manuals included with 
this package are thin, but well written. 
One is a description of CP/M implemen¬ 
tation of the language, but it includes a 
reasonable introduction to Modula-2. 
The other describes the DOS version of 
the system, and makes frequent refer¬ 
ences to the CP/M manual. 

The source code for the editor is 
available at extra cost. Despite the limi¬ 
tations of the small model, this compil¬ 
er is a good value and offers an ade¬ 
quate introduction to the language. 

MODULAR DIRECTIONS 

The six compilers reviewed here pre¬ 
sent the project manager with a variety 
of choices. If portability across a num¬ 
ber of machines is important, the ob¬ 
vious choice is Pecan, in spite of the 
drawbacks of the Power System and 
p-code. If a manager is designing for 
PCs alone, then the Logitech system or 
the Modula Corporation compiler fits 
the bill. For first-time Modula-2 users, 
the FTL and the PCollier compilers pro¬ 
vide excellent introductory documenta¬ 
tion and are reasonably priced. The jury 
is still out on the ITC product, but it is 
bound to improve. 

Their overall quality notwithstand¬ 
ing, none of these compilers puts Mod¬ 
ula-2 in a position to challenge the su¬ 
premacy of C in PC programming (yet). 
Only when these products allow foreign 
object code integration, using the 
Microsoft standard, will Modula-2 begin 
to take its true place in the PC market. 
In another direction, a Modula-2 com¬ 
piler that incorporates Microsoft Win¬ 
dows capability would, of course, prove 
a noteworthy step. The development of 


Do You Ever Get the Feeling 
That No One Speaks Your Language? 

Arity/Prolog. 

The Language That Spans the Generation Gap. 



Software that roars. 


gf/yity listens to what you ask for. You want a serious, versatile 
language that will go the distance for you. There are two very 
good reasons for you to use Prolog—to do your work smarter 
and faster. That'sexactly what the Arity/Prolog development 
environfne|t^|jj^elp you do. Our powerful tools, based on 
the general purpose programming language Prolog, will signif¬ 
icantly reduce your development time and allow you to solve a 
wide range of applicatioruproblems. 

— No translation required Our development environment for 
the IBM PC family and all MS-DOS compatibles includes the 
|: Arity/Prolog Compiler and Interpreter, the Arity/Expert Sys¬ 
tem, and Arity/SQL. And you can tie them all together. You 
can interface with several other programming languages and 
build extensions to your existing applications. You'll be truly 
multilingual —what better way to span the generation gap? 

I r 

It can take you to new places You'll discover amazing speed, 
power, and flexibility using the Arity/Prolog programming 
environment, with its one gigabyte of virtual memory and 
fast, compact compiled code, for conventional applications. 
And if you’re working in new territories, like expert systems or 
sophisticated database management systems, you'll be speak¬ 
ing the native tongue. 

Speak it freely Our products are not copy protected and we 
charge no royalties, so you can use them in as many end-user 
applications as you'd like. Why keep the language of solutions 
all to yourself? 

Join the thousands of assembly and C programmers who 
already use Arity/Prolog—the language of solutions. 

Call 1-800-PC-ARITY Today. 

Masschusetts residents call 617-371 -1243. 

ARITY CORPORATION 
30 Domino Drive, Concord, MA 01742 U.S.A. 

1-800-722-7489 or in Massachusetts call 617-371-1243 


CIRCLE NO. 136 ON READER SERVICE CARD 


136 


PC TECH JOURNAL 









Him lour Sjystem/3X 
IntoThe Perfect Host Wth 
PCOX Minology 


PCOX"5250 products 
make your System/3X 
treat your PCs like 
members of the family. 

Your System/3X and your 
PCsalready live together. Nowthey 
can work together, too. Thanks to 
PCOX Technology. 

With PCOX 5250 connec¬ 
tions, your PCs enjoy the full 
privileges of a 5251 Model 11,5291 
or 5292. 

Which means your PCs can 
access and transfer files from your 
System/3X data base, use its host 
as a departmental processor, or 
participate in your company’s dis¬ 
tributed SNA network. 



MORE WAYS TO SAY HELLO. 
The PCOX 5250 series comes in 
twinax and remote versions-one 
for Jocal connections, and one for 
connections over phone lines. 



PCOX 5250 products come 
in twinax and remote versions, so 
PCs can enjoy S/3X connections 
in person or over phone lines. 


And both versions support up 
to seven concurrent host sessions. 
No competing product delivers 
more. 

So let PCOXTbchnology open 
doors between your System/3X 
and your PCs. 

Call CXI today toll-free. 

800-225-PCOX 

In California, call 415-424-0700. 

m 

CXI, Inc., 3606 West Bayshore Road 

Palo Alto. CA 94303.Tfelex: 821945 

PCOX and all PCOX products are trademarks of CXI, Inc. 



CIRCLE NO. 217 ON READER SERVICE CARD 













UNIX TOOLS FOR YOUR PC 


MODUIA-2 


PC/VI 


UNIX’s VI Editor Now Available For Your PC! 

Are you being as productive as you can be with your 
computer? An editor should be a tool, not an obstacle to 
getting the job done. Increase your productivity today by 
choosing PC/VI — a COMPLETE implementation of 
UNIX* VI version 3.9 (as provided with System V 
Release 2). 

PC/VI is an implementation of the most powerful and 
most widely used full-screen editor available under the 
UNIX operating system. The following is only a hint of the 
power behind PC/VI: 

• Global search or search and replace using regular 
expressions 

• Full undo capability 

• Deletions, changes and cursor positioning on character, 
word, line, sentence, paragraph, section or global basis 

• Editing of files larger than available memory 

• Shell escapes to DOS 

• Copying and moving text 

• Macros and \Aford abbreviations 

• Auto-indent and Showmatch 

• MUCH, MUCH MORE! 

Don't take it from us. Here's what some of our customers 
say: “Just what I was looking for!", "It's great!", "Just like 
the real VI!". "The documentation is so good I have already 
learned things about VI that I never knew before." — IEEE 
Software. September 1986. 

PC/VI is available for IBM-PC's and generic MS-DOSf 
systems for only 8149. Included are CTAGS and SPLIT 
utilities.TERMCAP function library, and an IBM-PC specific 
version which enhances performance by as much as 
TEN FOLD! 

PC/TOOLS 

What makes UNIX so powerful? Sleek. Fast, and 
POWERFUL utilities! UNIX gives the user not dozens, but 
hundreds of tools. These tools were designed and have 
been continually enhanced over the last fifteen years! Now 
the most powerful and popular of these are available for 
your PC! Each is a complete implementation of the UNIX 
program. Open up our toolbox and find: 

• BFS • DIFFH • OD • STRINGS 

• CAL • DIFF3 • PR • TAIL 

• CUT • GREP • SED • WC 

• DIFF • HEAD • SEE 

All of these for only $49.00: naturally, extensive 
documentation is included! 

PC/SPELL 

Why settle for a spelling checker which can only 
compare words against its limited dictionary database 
when PC/SPELL is now available? PC/SPELL is a complete 
implementation of the UNIX spelling checker, renowned 
for its understanding of the rules of English! PC/SPELL 
determines if a word is correctly spelled by not only 
checking its database, but also by testing such 
transformations as pluralization and the addition and 
deletion of prefixes and suffixes. For only849.00, PC/SPELL 
is the first and last spelling checker you will ever need! 


Buy PC/VI and PC/TOOLS now and get PC/SPELL for 
only $1.00! Site licenses are available. Dealer inquiries 
invited. MA residents add 5% sales tax. AMEX, MC and Visa 
accepted without surcharge. Thirty day money back 
guarantee if not satisfied! Available in 8", 5 l A" and 3 W 
disk formats. For more information call today! 

•UNIX is a mutrinurk of SINT *MS l)OS is a iraih-iiurk nl Mlmraili. 

CUSTOM SOFTWARE SYSTEMS 

P.O. BOX 678 • NATICK, MA 01760 
617 * 653 * 2555 




H 

O 

o 

r 

CO 

Ti 

o 

9 

< 

O 


CIRCLE NO. 261 ON READER SERVICE CARD 


a Windows application, with its large li¬ 
brary of routines and lengthy header 
file, would be speeded up considerably 
by taking advantage of Modula-2’s sepa¬ 
rately compiled modules. The strength 
of this language is in its ability to spot 
type mismatches in procedure calls— 
this is a situation that often generates 
runtime errors in G. 

Modula-2 represents the future in 
large-scale programming—the develop¬ 
ment of a standard is important. The 
software engineering features that it 
contains are shared only by Ada. Given 
the expense of creating software, it 
seems inevitable that Modula-2 will be¬ 
come the language of choice for many 
software developers. I Sinigun ffiHI 

Interface Technologies Corporation 
3336 Richmond\ Suite 200 
Houston, TX 77098 
8001922-9049; 713/523-8422 
M2SDS and SDS-XP 

CIRCLE 345 ON READER SERVICE CARD 

Logitech, Inc. 

805 Veterans Blvd. 

Redwood City, CA 94063 

415/365-9852 

Modula-2 

CIRCLE 346 ON READER SERVICE CARD 

Modula Corporation 
1673 W. 820 North 
Provo, UT 84601 
801/375-7400 
PC Modula-2 

CIRCLE 347 ON READER SERVICE CARD 

PCollier Systems 

7925-A N. Oracle Road, Suite 390 
Tucson, AZ 85704 
800/522-2060; 800/654-7396 
Modula-2PC 

CIRCLE 348 ON READER SERVICE CARD 

Pecan Software Systems, Inc. 

1410 39th Street 
Brooklyn, NY 11218 
718/851-3100 
Modula-2 

CIRCLE 349 ON READER SERVICE CARD 

Workman & Associates 
1925 E. Mountain Street 
Pasadena, CA 91104 
818/791-7979 
FTL 

CIRCLE 350 ON READER SERVICE CARD 


John T. Cockerham, M.D., is a cardiologist at 
The Children's Hospital in Boston and is on 
the faculty of Harvard Medical School. His 
most recent articles for PC Tech Journal were 
“Evaluating the EGA: The EGA Standard," 
October 1986, p. 48, and “Evaluating the 
EGA: The EGA Spectrum ” October 1986, 
p. 80 and November 1986, p. 147. 


138 


PC TECH JOURNAL 



Here's a plug 

fordBASE. 



Clipp ^1 


EQEJMMfiEl^BREtB^ For information contact: 

% Nantucket 

Nantucket Corporation 

ESfflSSSx* 

(213) 390-7923 

CUPP*' NETWORKS DBASE APPUCAVtONS 

• o riiDoer’s new networking cap calls for 

applications, using O’® p ro grams to run on networks tot support DOS 

This new release compiles prog ^ of greater . 

networking functions, plus single-user j e d no runtime module, no licensing fee 

Compiled Applications can be 0 f ^ ow many users are connected to a 

or royalty. And there is no eX ^ 3 packs even more of Clipper’s famous speed. 

Clipper network. Plus the new release 

single-user and networking Memory support, additional functions and improved 

The new Clipper also sports E P protected. 

memof,eld,ThenewJa^ed— ^retail price of S^-Kegistered users ol 
PI inner AutUtnn oO IS uva 

* (MOO Clipper and Nantucket are trademarks of Nantucket Corporation. 

version for 513V. Other products trademarked by others. Copyright 1986. Nantucket Corporation. 

Clipper may upgrade to the new circle no. 224 on reader service card 


♦ «, ♦ A ♦ V, 

4 4 ♦ ♦ t 1 

♦ 4. 4 »* V 

^ ^ . ♦ + Lk 


♦ Hnte^ci '*|lp 



Pfix86/;/uy 


PforCe 


Plink86/;/f/.s 




PC BRAND 
NOW PFEATURES 
PFANTASTIC 



c 0^tu^' 


T oday's professional programmer demands high performance 
tools that speed up and enhance the application development 
process. That's why more programmers rely on one company for 
the best engineered, highest performance tools available- 
Pheomx. 

P hoenix offers a full line of powerful, yet easy-to-use. tools 
that help programmers more efficiently write, test and 
deliver the best applications possible. Complete, fully detailed 
documentation accompanying each tool enables quick mastery of 
the product In addition, all Phoenix tools are backed by full-time 
customer support professionals respected throughout the indus¬ 
try for their commitment and expertise. As a result, many 
Phoenix tools are already established as industry standards and 
others are fast on their way. 


Flink™ 86 plus 

P link86 plus is the only linkage editor 
containing advanced overlay capa¬ 
bilities. It handles any compiler or 
assembler producing standard Intel or 
Microsoft OBJ files, including COBOL 
and FORTRAN. Lattice C. Cl C-86, 
Microsoft/IBM languages, and 
mbp/COBOL. Virtual memory manage¬ 
ment ensures ample capacity for sym¬ 
bol and common block names (35,000). 
Plmk86 plus supports an unlimited size 
file, an unlimited number of modules 
and up to 4,095 overlays nested up to 
32 deep. Merges object modules, 
caches overlays in extended or ex¬ 
panded memory, and automatically 
reloads overlays upon function return. 
Includes Plib86 object library manager. 
List: *495 PC Brand: *325 

Plib™ 86 

P lib86 is an object module librarian 
for Microsoft and Intel format 
object modules and libraries. With 
Plib86, you can add, delete or extract 
modules to or from libraries, and 
explode a library to its component 
modules with one command. Plib86 also 
produces program cross-reference 
listings in various formats to a disk file, 
screen or printer. 

Originally listed at $195. Plib86 is now 
included with Plink86 plus. 

Ptel 

A Pfantastic communications program 
for use with most popular modems 
such as Hayes and compatibles. DEC. 
Racal Vadic, Anchor, US Robotics and 
Novation. Ptel automatically adapts to 
Ttelink, XModem. Kermit or Modem 7 
for CRC checking and for ufn and afn 
(i.e. "wildcard") file name list transfers, 
if the bulletin board or the other end 
computer supports them. With Telmk, 
you'll even get a forecast of file trans¬ 
mission time, always useful in controll¬ 
ing telephone expenses. 

In addition to saving received files, 
Ptel can create and save a transcript of 
the session commands and messages. 

Highly configurable, with choices 
temporary or saved as altered defaults. 
Unique telephone directory of bulletin 
boards and other services, allowing 
access by service name. Ptel runs fully 
interactive or can be batch driven from 
a script. You can even exit to DOS 
move files around or run another appli¬ 
cation and then return to Ptel. all with¬ 
out dropping the line. 

List: *195 PC Brand: *115 


Pasm™ 86 

P asm86 provides both quick assem¬ 
bly and superior syntax checking, 
plus a wealth of other features and 
utilities to maximize programming pro¬ 
ductivity. It is a fully MASM-compatible 
8086 macro assembler that supports 
8087. 80286 and 80287 operating code 
mnemonics. Features include ability to: 
define local symbols in the current pro¬ 
cedure, assemble files with up to 15,000 
symbols, define symbols at assembly 
time, obtain listings of error lines only, 
with warning messages on questionable 
statements. Pasm's comprehensive 
documentation includes detailed 
descriptions and examples of each pro ¬ 
cessor instruction. Now includes Pfix- 
Lite, a subset of Pfix86p/us. 

List: *195 PC Brand: *125 

Pmate™ 

A full screen, single keystroke, fully 
customizable text processor/ 
editor with advanced features includ¬ 
ing: ability to run m the background, C 
and FORTRAN specific macros, auto¬ 
matic disk buffering, ten individual 
auxiliary buffers, menu, mouse, or' 
command driven with extensive macro 
command language, and horizontal 
scrolling. Pmate offers automatic word 
wrap, text formatting, global or local 
setting of margins, tab stops, indents, 
and a unique last-in. first-out "garbage 
stack" that saves deleted items for 
recovery. 

List: $195 PC Brand: *115 

Pre-C™ 

N ow twice as fast! Similar to the Unix 
LINT for C, but with additional 
functionality. It crosschecks multiple 
source files and libraries at once, 
reporting incorrect, obsolete, and non¬ 
portable C usages that no compiler 
would catch. Pre-C immediately uncov¬ 
ers errors in interfaces between pro¬ 
gram modules which are very difficult 
to find using only a debugger. Pre-C 
accepts full UNIX System III C syntax, 
a subset of which is implemented by 
most MS-DOS C compilers, as well as 
ANSI proposed extensions. External 
libraries can be used with or without 
source code. Pre-C libraries for the 
latest releases of the Mark Williams, 
Lattice, Cl, Microsoft, Wizard, and 
Aztec "C" compilers are included, and 
others can be added by supplying Pre- 
C with function names and arguments. 
All memory models are supported. 

List: *295 PC Brand: *155 


Pfinish™ 

P finish helps to "fine-tune" a soft¬ 
ware product by identifying ineffi¬ 
cient or unnecessary sections of code 
that need to be rewritten for maximum 
performance. It analyzes your program 
during execution, producing reports 
and histograms that give a snapshot of 
which routines were reached, their 
callers, how many times each is 
executed, how much time is spent in 
each, how many instructions are 
executed in each, and more. Histo¬ 
grams and tabular reports, sorted by 
address or symbol, may be written in 
any page width or height, to a file, the 
console, or the printer. Pfinish, unlike 
other "profilers", can use symbol table 
information to produce much more 
meaningful analyses on overlays and 
interrupts. 

List: *395 PC Brand: *235 

Pdisk™ 

P disk is a complete disk manage¬ 
ment package that includes ad¬ 
vanced Backup/Restore, Tree Manage¬ 
ment and Disk Cache utilites. Menu, 
command line or file-driven. Many 
options permit backup/restore mclu- 
sions/exclusions, whole and partial sub¬ 
directories, backups by date/time, file 
type, and backups of all files or files 
changed since last backup. It can also 
maintain a log of backups. Supports AT 
high-density floppies, PC floppies, and 
any storage device accessible through 
a device driver. Tree-oriented Direc¬ 
tory, Delete, Copy, Compare, and 
Remove-Directory simplify manage¬ 
ment of complicated subdirectory struc¬ 
tures. CACHE significantly speeds up 
disk operation on PC/XT/AT by keep¬ 
ing data in memory instead of disk. In 
addition. CACHE is compatible with the 
Lotus-Intel-Microsoft (LIM) expanded 
memory specification, as well as ex¬ 
tended memory. 

List: *195 PC Brand: *125 


Pmaker™ 

S imilar to the Unix MAKE utility, 
Pmaker keeps track of which 
modules in a program are changed, 
and recompiles, reassembles, and 
relinks those modules to produce a 
finished product—all with a single com¬ 
mand. An essential tool for managing 
large, complicated, or distributed pro¬ 
gramming projects, Pmaker is easier to 
use than similar products, which re¬ 
quire you to create lists of all your input 
files. Pmaker includes a utility that auto¬ 
matically creates and edits such lists 
based on answers to a few simple 
questions. Pmaker works with any com¬ 
piled language, linker, or other tool you 
use. 

List: *125 PC Brand. *85 


Pfix™ BBplus 

P ix86 plus is an easy to use. menu 
driven, multi-windowed symbolic 
debugger that works with any IBM or 
Microsoft compiled language. 

Pfix86 plus accesses the full symbol 
table provided by MS Link or 
Plink86 plus, and automatically handles 
Plink86p/us-overlaid or resident pro¬ 
grams. Source code, assembly lan¬ 
guage translations, stack, data areas, 
and breakpoints are displayed simul¬ 
taneously. Features include: In-line 
assembler for temporary patches, 
temporary and permanent breakpoint 
settings, full speed or trace modes, 
user-assignable variables, dual-monitor 
support, up to 100-step traceback, . 
debug log to disk or printer, synchron¬ 
ized source file display, breakpoints in 
source code, disassembly to disk, con¬ 
figurable menus, multiple code and 
data windows, and keystroke macros. 
List: *395 PC Brand: *235 

PforCe™ 

P forCe is a pre-coded optimized 
object-oriented toolkit of over 400 
routines for C programmers. It includes 
data bases with B-trees, windows, 
interrupt-driven communications, string 
handling, menus, all of the basic DOS 
interfaces, and a complete set of low- 
level functions to interface directly to 
the hardware. PforCe comes complete 
with indexed reference manual, on line 
resident help, and quick reference 
card. It supports all memory models of 
the following C compilers: Lattice, 
Aztec, Microsoft, CI-86, and Wizard. 
PforCe includes full source code and 
there are no royalties on generated ap¬ 
plications using the libraries. A 
demonstration diskette is also available. 
List: *395 PC Brand: * 235 

Pfantasy Pac 

A super value pac of Phoenix good¬ 
ies. Includes Pfix86 plus, Pmate, 
Ptel, Plink86p7us, Pmaker and Pfinish. 
List: $1295 PC Brand: $875 


For Orders, Literature, or Catalogs, Call Us at... 

800 PC -BRAND 

That's (800) 722-7263. In NY State call (212) 242-3600 
PC Brand, 150 5th Ave., New York, N.Y. 10011-4311 
Ttelex: 667962 (SOFT COMM NYK) 

© 1986 PC BRAND Prices, terms, and specifications subject to change without notice. 













PC BRAND: GAREFUUY CHOSEN 


PROGRAMMER TOOLS 


BRIEF Is Anything But. 
A Whopper of an Editor 

W ith a name that belies its thorough¬ 
ness, Brief™ has every feature 
you’ve ever contemplated for your editor- 
in-chief. Text, from keyboard or files, is 
housed in multiple buffers, and scrolled 
through one or morp windows you open, 
close, resize. A text buffer may be called to 
different windows to view two areas at 
once. A change in one changes both. Text 
blocks may be marked for printing, writing 
to files, movement to scrap buffers for cut 
and paste into other buffers, or deletion, 
with as many "undo" levels as you want. 

Brief has text search abilities rivaling 
"grep", with wildcards for matching, 
indifference to intervening characters, 
acceptance of character ranges. 

If you use Lattice, C86™, or Wizard, and 
have 320k, you can compile your C 
program without ever leaving Brief. It finds 
the lines with errors, and marches you 
through the text for repairs. 

Parts of Brief were written with its own 
Lisp-like macro language which has 
structure, 32-character variable names, 
conditional execution, loops, and you can 
actually read it! Nothing like the 
hieroglyphs we've seen elsewhere. Bulletin 
board arid public domain disks with 
macros. "Simply the best text editor you 
can buy”, Dvorak Infoworld. (Needs 192k.) 
Ask for: List: PC Brand: 

U0590 *195 Call 

HALO GRAPHICS 

SYSTEM Multi-Board 
Graphics Library 

The premier graphics library that got the 
ball rolling for PC-based graphics and has 
grown so omnipotent that it supports over 
25 graphics boards — including IBM's 
EGA and Nr. 9 Revolution's hi-res series — 
and has a multitude of mouse and printer 
drivers. All that in each box. Separate C 
versions for Lattice, M'soft, Aztez, CI86. 

What does Multi-Halo do? A down to the 
last pixel graphics library plus functions to 
reset drivers so distributed program can 
run on anything. Wonderful value for single 
license. Costly royalties though for 
redistribution. Specify: S0315 & Language. 
List: *300. We: * 219 . With Dr. Halo II, a free¬ 
standing "paint": List: *440, Us: * 299 . 


WINDOWS for C/WINDOWS for DATA 

Microsoft Windows™ and TopView™ Compatible 


W indows for C™is a library of over 80 
functions to add the pizazz and prac¬ 
ticality, of window partitioning to your 
application. Unlimited windows, each 
defined in a C structure for easy reference 
throughout your program, can be made 
either to pop up or permanently overwrite 
the screen. Routines will scroll and 
highlight lists with arrow keys, will read 
and scroll ASCII files vertically and 
horizontally in windows, and even write to 
memory-loaded files off the screen. 

Logical treatment of video, attributes 
permits unchanged programs to run on 
color or monochrome. Colors of windows 
are set individually. 

All functions are in separate modules; 
only those used are linked. Only buffers 
holding on-screen or temporarily 
obscured windows occupy RAM; others 
released dynamically. Best overall rating 
and fastest display in Bill Hunt's 7/85 Tech 
Journal review of five windowing products. 

Windows for Data comprises all of 
Windows for C but takes in data through 
the windows as well. At the high level a 
single function lets you specify prompt 
string, field length, data type, screen 
location, picture, target variable, then sets 
lesser functions scurrying to get and 
process a user’s input. There are utilities to 
get system date and time, mess with 
strings, create your own masks for fields. 

Field options can require entry, prevent 
entry, permit insert or overtype, beeping 
on invalid or overflow keystrokes, and 
attachment of field-specific help messages 


and functions you want called to display 
messages or validate entries. And you 
decide which keys will clear a field, jump 
to the next or pnor, quit, etc. Options 
diverse enough that a set of "fields" can be 
made to behave like a Lotus™ menu. 
Specify Compiler: List: PC Brand: 

T0100 Windows for C *195 *149 

T0150 Windows for Data *295 *259 


.fcKGV^k' 

SfSSgSiSBg 

even try ou p begins with E, 

i selves if produ a 9 °°^ ven jfitmeans 

T. or L through " * , some 

SSMkSSBFSS 

^p fance XS^ h L n9 T 


MICROSOFT C 4.0 

A Great C Battle Rages and You’re Winning 

A 


s the dreadnaughts pound each 
other with ever heavier ordnance, 
today’s programmers reap the spoils of this 
war. Bundling a source debugger and a 
"make", and sporting a "huge" memory 
model permitting single data objects 
larger than 64k, the Microsoft C compiler 
has jumped a full version number to 4.0. 

But what's really impressive are the bench¬ 
marks reported in Dr. Dobb’s (8/86) 
encyclopaedic survey of 17 C compilers. 
Microsoft’s and IBM’s C (licensed from 
Microsoft) run away with the contest 
winning 11 of 27 benchmarks. 

The CodeView™ debugger, free for a 
limited time, uses windows to show every¬ 
thing on one screen: source alongside 
disassembled object, variables, stack and 
registers. Drop down windows—use a mouse 
if you like—obviate learning of commands. 
"A source-level debugger that puts the rest 


CTREE 

B-Tree File Manager, Source Code, No Royalties! 

c 


-tree is sturdy code that has 
weathered many seasons of pro¬ 
longed and widespread use. It comes in C 
source, so you can modify it to fit a special 
case. No royalties provided you bind it into 
your binary application. 

C-tree's design splits nodes to allow any 
number of users to access an index file 
simultaneously even when updates are in 
progress. So multi-user configurations and 
adaptation to networks are possible. 
Record-locking routines are provided for 


dBC Lattice Library Maintains dBASE 
Compatible Files With the Power and Speed of C 


d BC™ links C to dBASE. It creates and 
mainta..is files and their indexes which 
exactly replicate dBASE file design. So 
dBASE can read and update them. And 
the reverse. dBC can use any files created 
by dBASE. Now C and dBASE can operate 
on the same data bases interchangeably. 

That opens up the widespread culture of 
dBASE installations to exploitation by C 
programmers. Tap that market, avoid the 
resident dBASE language, and gain the 
advantages of C with this single product. 

dBC's functions parallel all dBASE's file 
handling commands, many decomposed 
to give closer control. Each backed by 
demo source files on disk. 


Use dBC for custom work for clients, or 
on its own. It’s a complete ISAM file 
manager for C whether or not dBASE will 
be used in tandem, supports all four 
memory models, and can have sixteen 
index and data files open. Big discount to 
buyers of both dBASE II and III versions. 
Specify Lattice, Microsoft 3.x, or DeSmet. 


DOS 3.1/3.2, UNIX and XENIX. 

Thanks to source code which does not 
deviate from the K&R standard, C-tree can 
travel. Tests in many environments prove 
that C-tree gives your application a ticket 
to anywhere. 

C-tree permits any number of keys for a 
data file, supports duplicate keys, 
alphanumeric or numeric, supports files of 
variable record length; multiple keys in 
one index file, and keys of variable length. 
Both high level ISAM routines which handle 
details with minimum coding, and decom¬ 
posed step-by-step functions you can access 
directly. It's comprehensive. 

Ask for: List: PC Brand: 

F0660 *395 *329 


to shame” (Dobb's), 

Microsoft C now has five memory models 
for code and data, plus non-library support 
for another thirteen, and boasts alternate 
math packages for speed versus accuracy, 
with or without 8087/80287 chips. A big 
plus in multi-language settings: call from 
this C any routine written in later versions 
of M'soft Pascal, FORTRAN, or Macro 
Assembler. Object code of all four may be 
intermixed come link time or commingled 
into libraries. 

Both linker and library manager are part 
of the package, as is the "make", a UNIX™ 
name for a smart batch program which 
knows to expend minimum effort to rebuild 
any size of project by compiling and 
assembling only elements affected by new 
or changed modules. 

It is reportedly used by Lotus, Ashton¬ 
Tate and, fittingly, Microsoft itself to develop 
■ Windows. Dobb’s calls it "the best MS-DOS 
C development environment value today 
[for] virtually any kind of program 
conceivable." 320k suggested. 

Ask for: List: PC Brand: 

G0500 *450 *295 

CURSES Unix Style Screen 
Management 

Curses from Lattice™ manages the screen 
of the PC like Unix™ curses. Library of 84 
functions and macros parallels Unix with 
matching parameter lists. So Unix pro¬ 
grams are at home on the PC, and vice 
versa. Keeps any number of screens in 
memory, supports color, vast function set to 
get characters, wrap lines, scroll, blank 
lines, highlight, etc. Like Unix refreshes 
screen only on your command. Ask for: 
L0850. List: *125. Here: *99. With Source: 
L0860, *250/*199 


PANEL Feature-Laden Screen Design Tool 

w 


Versions: 

List: 

PC Brand: 

LOOII 

For dBASE II 

*250 

*195 

LCCII With Source 

*500 

*390 

L0III 

For dBASE III 

*250 

*195 

LCIII 

With Source 

*500 

*390 




' riting your own screenware can 
blow completion dates and profits. 
Panel™ works with you interactively to 
set up foolproof screen displays and 
data entry forms rapidly. Output is C 
source code. 

Not just single plane: layer your screen 
designs with up to ten overlapping 
images: Background pop-up lists, help 
boxes, and alternate input fields. 

Panel builds in a user interface for 
keystroke movement within and between 
fields, supplies validation routines for 


checking user field entries. Diverse at¬ 
tributes may be selected for any field — 
size, data type, color, conversion of input 
to upper case; clearance of existing data 
when new entry is started; masks for 
standard formats (eg, dates); phrases 
which fill in when their first letter is 
typed; multiple-choice lists from which 
to choose by cursoring a highlighted bar. 
Fields may be multi-lined and scrolled if 
larger than the screen space allotted 
them. Specify: S0400 & Compiler. List: 
*295 Us *229 


TionaltiBSwWfe 'Hfl/FO? CM cataiw 


For Orders, Literature, or Catalogs, Call Us at... 

800 PC-BRAND 

That's (800) 722-7263. In NY State call (212) 242-3600 
PC Brand, 150 5th Ave„ New York, N.Y. 10011-4311 
Ttelex: 667962 (SOFT COMM NYK) 

© 1986 PC BRAND 

Prices, terms, and specifications subject to change without notice. 













TODAY’S TOP QUALITY AIDS TO 
PROGRAMMING PRODUCTIVITY 


GREENLEAF Bountiful DAN BRICKLIN’S DEMO PROGRAM 

FUNCTIONS Harvest Storyboard Your Program 


BASTOC OPTIMIZES'. 

Translates BASIC Into C 


C source, assembler source, and binary 
libraries of 225 functions for many com¬ 
pilers. Emphasizes tight functional group¬ 
ings to minimize loading code which your 
application may never use Manual helps 
select functions, bulletin board, too. 

A sampling: DOS extensions for file and 
directory manipulation; Screen: to select 
mode, page, monochrome or color, palette; 
cursor shape, positioning; clearing and 
scrolling; pixel get and put; read light pen. 
Strings: Center, justify, etc.; efficient list 
operations which add, delete, sort string 
pointers for top speed. Other: graphics 
character primitives, keyboard status, func¬ 
tion key assignment, time/date, read 
registers and memory size, peek and 
poke. Mature best-seller. Specify: S0770 & 
Compiler. List: *185, Here: *139 


GREENLEAF HeUo World 
COMMUNICATIONS 

Want your application to communicate 
with other users or remote date bases by 
asynchronous communications built right 
into your C programs! Even if you don’t need 
it now, that's a skill to have at the ready! 

120 functions and demo programs in 
both C and assembler source code set up 
separate transmit and receive ring buffers 
for up to 16 simultaneous channels. In¬ 
terrupt driven so you can halt an incoming 
record, display it, file it, let the user edit it, 
then continue. Goodbye separate com¬ 
munications software. 

Supports up to 9600 baud, ASCII or 
binary, any panty or word length, 8250 
UARTs, Xon/Xoff and Xmodem, 
WideTrack receive. Specify: S0750 & 
Compiler. List:*185, Us: *139 

INTERACTIVE-C 

Compiler-Compatible 
Interpreter, Editor, 
Debugger 

n arlier C interpreters were miracu- 
Jfci lous compromises: Interactive-C 
shows how far C interpreters have 
come. More than an interpreter, 
Interactive-C is a fully-integrated 
development environment: a complete 
K&R interpreter bound tightly to its 
own editor and debugger. 

Slice through programming projects 
like a hot knife through butter. Exten¬ 
sive error-checking insures immediate 
detection of program misbehavior. 

State of the art debugging tools 
include breakpoints, watchvalues, sev¬ 
eral stepping options and interactive 
viewing and modification of variables. 
An Interactive-C exclusive lets you 
interrupt to edit and "continue" from 
where you left off. Eliminates plodding 
replays of already debugged code— 
the ball and chain of other interpreters. 

Operate Interactive-C using adjust¬ 
able edit, command, and status win¬ 
dows. Toggle a second screen show¬ 
ing only your program’s output— 
never any crowded intermixing. Or, 
boost productivity with twin CRTs. 

Load object code of Junctions you 
have already compiled. Or of com¬ 
mercial libraries. Interactive-C has 
immediate mode, syntax checking 
both as you type and run, and cursor 
positioning precisely pointing at an 
error, not possible with incremental or 
pseudo-compilers which leave source 
code behind. 

100% compiler compatible—right 
down to header files and library calls. 
Port programs between Interactive-C 
and your compiler with no modifications 
whatever — not even tricky areas of 
dynamic memory allocation and I/O. 
Specity: List: PC Brand: 

E950 & Compiler *249 *219 


T he Legendary One has created 

Metaphor Two when the rest of us are 
still on Zero. Dan’s first was the original 
electronic spreadsheet (VisiCalc™). This 
one is for programmers. 

Words don't express program ideas 
because programs are screens! Dan's 
Demo creates slide shows. Create a 
screen — a snapshot of your planned pro¬ 
duct as it runs. Anything goes: words, 
borders, box rules, inverse and underlining 
of monochrome, fore- and background color. 
Copy this "slide" to an empty screen. 
Change it a little, to show the next instant of 
run-time Do it again. Presto, a whole slide 
show of your program in action. 

All 250 characters and attributes are 
available from scrollable lists which pop to 
the screen. All commands are layered in 
Lotus-style pop-up menus. Frequent 
choices mapped to function keys as well. 


80x25 character mode, not bit-mapped. 

Screen areas can be blocked for cut and 
paste or filled with color or characters, 
even blink. Slides can overlay on others, 
can be shuffled, deleted. Slides can pro¬ 
ceed at time intervals or branch anywhere 
in the slide sequence depending on user 
keyhits. 

Invaluable to prototype the program you 
are about to write, to position the labels, 
choose the color decor, smoothe out the 
keystroke interface. Or load the "capture" 
utility and snapshot the screens of any run¬ 
ning program for an instant slide show. 

Each copy entitles you to redistribute fifty 
of the slide projector program that runs 
demos. Plain manual, no binder keeps 
price of big product small. “Might... 
become the essential tool in.. .user inter¬ 
face prototyping," Tech Journal. Ask for: 
N0100. List: *75 US: *69 


F or a trifling price, BASTOC™ moves 
truckloads of BASIC code over to C. 

It's a translator which takes in Microsoft 
Extended BASIC and emits pure K&R C 
for Lattice 3.0. It will optionally convert 
your program into a single monolithic C 
function or decompose it into separate 
functions, one for each GOSUB label. 

Version 2's optimization dramatically 
reduces execution time. Converts to in¬ 
tegers those variables in BASIC programs 
which do not need floating point. Where 
BASIC uses full assignment statements to 
increment counters, BASTOC converts to 
C's compact form. Strings dynamically 
allocated ndding your application of BASIC’s 
catatonic halts for garbage collection. 
Creates'Structure of even convoluted 
BASIC code. Huge worksaver. 

Ask for: List: PC Brand: 

S0375 ‘495 *399 


Shopping List for the Power Workbench 


ASSEMBLERS & DEBUGGERS LIST US 

Advanced Trace-86 Morgan, ASM Interpreter ... 175 119 

Codesmith-86 Dubugger by Visual Age . 145 99 

CSD Debugger C source level by Mark Williams 75 55 

C-Sprite Debugger by Lattice, source level . 175 139 

Microsoft Macro Assembler with Utilities . 150 109 

PASM86 by Phoenix, Macro Assembler . 195 125 

Periscope I Debugger Data Base Decisions .... 295 235 

Periscope II Data Base Decisions . 129 99 

Periscope II -X software only . 115 74 

Pfix86 Plus by Phoenix, Symbolic Debugger ... 395 235 

BASIC LANGUAGE 

BetterB ASIC Summit Soft ware . 195 165 

BetterBASIC Utilities 8087 Math Support . 99 85 

Btrieve Interface . 99 85 

Run-Time Module . 250 225 

Microsoft BASIC Interpreter for XENIX . 350 295 

Microsoft QuickBASIC Compiler full BASICA .. 99 79 

Professional BASIC by Morgan ... 99 69 

True BASIC True BASIC Inc . 150 99 

Run Time Module . 150 99 

True BASIC Libraries Btrieve, Asyn, Sort, etc .... Var Call 

C COMPILERS 

C-86 Compiler Computer Innovations . 395 289 

Lattice C Compiler from Lattice . 500 299 

Let’s C Compiler by Mark Williams . 75 55 

with CSD Source Level Debugger . 150 105 

MWC-86: Mark Williams C Development. 495 369 

Microsoft C Compiler 4.0 . 450 295 

C INTERPRETERS 

C-Terp by Gimpel Software . 300 249 

Instant C by Rational Systems . 500 395 

Interactive-C by IMP ACC with debugging . 249 219 

RUN/C Professional from Lifeboat . 250 185 

RUNIC without Loadable Libraries . 120 109 

TEXT EDITORS 

Brief from Solution Systems . 195 Call 

Edix by Emerging Tech...Multi-screen . 195 159 

Epsilon by Lugaru Software, like EMACS . 195 149 

FirsTime by Spruce Technology, C syntax . 295 229 

Kedit by Mansfield, similar to Xedit . 125 99 

LSE, the Lattice Screen Editor Multi Window ... 125 100 

Pmate by Phoenix, with Macros . 195 115 

Text Management Utilities Grep, splat, diff, etc. 120 100 

Vedit by Compuview . 150 99 

Vedit Plus by Compuview . 185 129 

FILE MANAGERS 

Btrieve by Softcraft, no royalties . 250 195 

Btrieve Network by Softcraft . 595 465 

C-Tree by FairCom - no royalties, source . 395 329 

R-Tr ee by FairCom-Report Generator . 295 245 

C-Tree & R-Tree Combo by FairCom . 650 541 

dBC dBASE file manager from Lattice . 250 195 

with source ... 500 390 

dbVista single user QBMS by Raima . 195 139 

with source . 495 399 

dbVista mufti-user DBMS .. 495 399 

with source . 990 815 

Opt-Tech Sort Can sort Btrieve files . 149 105 

SCREEN DESIGN 

Curses by Lattice, UNIX screen designer . 125 99 

with Source . 250 199 

Greenleaf Data Windows. New . 225 169 

with source . 395 297 

source purchased later . 225 169 

On-Line Help from Opt-Tech Data . 149 105 

Panel by Roundhill, no royalties . 295 229 

View Manager for C by Blaise . 275 189 

Vitamin C by Creative Programming . 150 129 


Windows for C Vermont Creative Software .... 195 149 

Windows for Data includes Windows forC .... 295 259 

ZView Data Management Consultants . 245 175 

GRAPHICS 

Essential Graphics by Essential, no royalties 250 210 

GSS Graphics Development Toolkit. 495 375 

GSS Kernel System by Graphic Software . 495 375 

GSS Kernel System for IBM RT . 795 645 

GSS Metafile Interpreter. 295 235 

GSS Plotting System. 495 375 

Halo by Media Cybernetics . 300 219 

with Dr. Halo II. 440 299 

Halo for Microsoft includes all fonts . 595 434 

COMMUNICATIONS 

Asynch Manager by Blaise, for C or Pascal .... 175 125 

Greenleaf Communications by Greenleaf . 185 139 

PTel by Phoenix, Binary File Communicator.... 195 115 

Software Horizons Pack 3. 149 119 

UTILITY LIBRARIES 

Blaise C Tools Plus. 175 125 

Blaise C Tools. 125 89 

Blaise C Tools 2 . 100 69 

C Food Smorgasbord by Lattice . 150 109 

C Utility Library by Essential, 300 functions _ 185 139 

Greenleaf Functions by Greenleaf Software ... 185 139 

PforCe by Phoenix, vast library .: . 395 235 

Software Horizons Packages . Var Call 

TopView Tool Basket by Lattice, source avail... 250 199 

DEVELOPMENT TOOLS 

Code Sifter by David Smith Software, Profiler 119 89 

C-Worthy by Custom Design Software . 295 269 

C-Worthy for Network Menus, help, errors . 495 449 

Dan Bricklin’s Demo Program Prototyper . 75 69 

LMK from Lattice by Lattice, “make” like UNIX . 195 149 

Microsoft Window Development Toolkit. 500 365 

PC-Lint by Gimpel Software, after UNIX’s “lint ”. 139 125 

PFinish by Phoenix, EXE performance analyzer. 395 235 

Plink86 Plus Utilizes memory for overlays . 495 325 

Pmaker by Phoenix, like UNIX “make” . 125 85 

Pre-C by Phoenix, UNIX "lint”-alike . 295 155 

Pfantasy Pac six Phoenix products . 1295 875 

OTHER TOOLS 

BASTOC by JMl, convert BASIC to C . 495 399 

BASIC-C BASIC’s functions added to C . 175 139 

The HAMMER by OES Systems . 195 139 

Report Option by Softcraft, Btrieve Report Gen.. 145 128 

Xtrieve by Softcraft, Query Utility for Btrieve ... 245 220 

FORTRAN COMPILERS & UTILITIES 
ACS Time Series by Alpha Computer Sen/ice... 495 405 

Forlib- Plus by Alpha Computer Service . 70 45 

Microsoft FORTRAN Links with Microsoft C ... 350 219 

Microsoft FORTRAN for XENIX . 695 546 

RM/FORTRAN by Ryan McFarland . 595 Call 

Scientific Subroutine Package by Alpha . 295 239 

The Statistician by Alpha Computer . 295 239 

Strings & Things by Alpha Computer . 70 45 

OTHER LANGUAGES & UTILITIES 

Microsoft COBOL Compiler,. 700 499 

Microsoft COBOL Compiler for XENIX . 995 795 

Microsoft COBOL Tools with Source Debugger . 350 259 

Microsoft COBOL Tools for XENIX . 450 333 

Microsoft Lisp New Common Lisp . 250 189 

Microsoft MuMath includes MuSimp . 300 199 

Microsoft Pascal Compiler Links with M’soft C. 300 199 

Microsoft Pascal Compiler for XENIX . 695 546 

PDisk Phoenix's new disk manager . 195 125 

RM/COBOL by Ryan-McFarland . 950 Call 

RM/COBOL 8XANSI85 COBOL . 1250 Call 

Source Print Aldebaran’s diagrammer . 139 109 











































































































PRICED TO SAVE YOU MONEY, up 
SHIPPED EAST ANYWHERE, 


FYAN-McFARLAND FORTRAN 

A Mighty Fortress Is Their FORTRAN 


LATTICE C COMPILER 

Major Upgrades to the Best Selling C Compiler 


P icking over features of rival products 
is not necessary if FORTRAN is your 
need, still the citadel of scientific and 
engineering work. Ryan-McFarland has 
left the competition battering at the gates. 

RM/FORTRAN™ is a complete im¬ 
plementation of FORTRAN-77 (ANSI 
X3.9-1978), the only PC FORTRAN certified 
by the General Services Administration at 
the highest test level. The reason: it's a 
big mainframe compiler moved to PCs, 
with the bonus that mainframe and mini 
applications can wander between 


RUN/C PRO 

C Interpreter Links 
Binary Libraries 

R un/C comes in an apprentice and 
pro version. The professional model 
dynamically loads and unloads multiple 
binary function libraries like C-Food 
Smorgasbord™ and Halo Graphics™ — 
potentially any library compiled with 
Lattice’s large model. Inside this inter¬ 
preter your C program can reach for func¬ 
tions in the best of commercial libraries. 

This C interpreter behaves like PC BASIC 
meets WordStar* . Use fullscreen editing 
to create a program. RUN it. If it stumbles, 
LIST it, EDIT it, RUN it again, fix it again. 
Use familiar commands like LOAD, MERGE, 
SAVE, FILES, even TRON and TRACE. 

Ideal for program development. Put up 
code at high speed, try out things devil- 
may care, let RUN/C find your malaprops. 
Blast away until tight little code segments 
are undyingly faithful. 

Manual shows how to develop the inter¬ 
face to a commercial library, using the Lat¬ 
tice compiler (a must!). Link your own func¬ 
tion archive the same way. (320k minimum; 
512k recommended to fit libraries.) 

Ask for: S0950 List: *250 PCB: *185 


ZVIEW 

Screen Design Aid 

A complete package for screen 
design with full windows manage¬ 
ment as a bonus! Easy creation of 
screens with complex validation, such 
as range checking or required/option¬ 
al data. Powerful Screen Paint utility 
for creating or editing applications 
screens. Built in security levels, set at 
run-time, control read or read /write 
access by field or screen. Automatic 
help screen processing for run-time 
aid per field or screen. Applications 
regain control during field tabbing, 
allowing run-time on-screen transaction 
processing or flow control. Run-time 
functions include Screen Read and 
Write with automatic transparent data 
conversion from screen image to data 
storage, Field Editing, Help Screen 
Processing, even a capability to 
change any field characteristic at run¬ 
time, plus Window Push Pop and Scroll. 
Versions for Lattice, Microsoft and 
Aztec C. Automatic free updates to 
registered users. No run-time royalties. 
List *245 PC Brand *175 


environments. 

Now, on your PC, you can develop large 
applications, with programs up to 640k 
(bigger using overlays), arrays over 64k, 
and using a long list of VS, VAX and 
FORTRAN-66 extensions you may have 
grown fond of — long symbolic names, "in¬ 
clude", IRT bit functions — because R-M 
has left out nothing. 

But what really sets RM/FORTRAN 
apart is optimization. The compiler 
reduces the number of instructions to the 
minimum which will actually execute, and 
even takes advantage of each processor's 
features to deliver lightning-fast object 
code. It runs 30%-40°/o faster than Microsoft 
3.2, and could make your mainframe not 
worth the trouble. 

Comes with an interactive symbolic 
debugger like that accompanying IBM VS 
FORTRAN, Plink86 subset, has a cross 
reference compile option, supports 
assembler and C subroutine calls, IEEE 
floating point, 8087 and 80287 chips. 

"Compiler’s documentation, ease of us- 
speed of execution, and debugger 
facilities place it first for recommendation 
said the Tech Journal (10/85). 

R-M has been writing FORTRAN com¬ 
pilers for IBM, DEC, etc. for 20 years. 

There is no greater expert. 

Ask for: List: PC Brand: 

10300 *595 Call 


L attice now embraces key UNIX™ 
enhancements which have entered 
the language since K&R: void functions 
returning no value, enumerated data types 
to assign stepped values to variables, data 
passing between structures by assignment. 

The greatly expanded libraries (325 
functions!) enable the file sharing and 
record locking provisions of DOS 3.1, pro¬ 
vide a full complement of transcendentals, 
and a host of utilities to mimic the UNIX 
and XENIX™ environments. 

Lattice 3.0 defaults to the ANSI proposed 
standard when you need strict adherence, 
but command line options restore leniency. 
And it adopts ANSI checking of external 
function arguments by data type to kill bug 
swarms when modules join up at link time. 

SSKESsSSg 

card numb®'P q,. Refunds to , 

address of card u i Ba nk, 12 

1§S^ 


GSS GRAPHICS SYSTEM _ „ twd mw 

Leave the Device Driving to GSS ANS ' c prices ci 


G SS™ has reconfigured two compo¬ 
nents of its comprehensive graphics 
tools to conform with the ANSI Computer 
Graphics Interface (CGI) standard. 

At the heart of the system is the Develop¬ 
ment Toolkit which contains all language 
interfaces and device drivers for key¬ 
boards, mice, joysticks, tablets, printers, 
plotters, cameras, and more. Drivers house 
management of vector graphics (plotters) 
and bitmaps used by raster input devices 
(scanners) to insulate the application pro¬ 
gram from concern for device idiosyncracy. 
No one else has implemented CGI that 
way. It means your programming remains 
generic: just switch drivers and the same 
program will drive a different device. 

GSS Kernel™ conforms to level 2b of 
ANSI's Graphical Kernel System (GKS) and 
contains all its needed drivers and 
language bindings. Kernel has macro level 
tools to draw and color an object, store the 
sequential instructions, and recreate the 
object on its own, as well as segment it, 
transform it, etc. So powerful, a single com¬ 
mand may represent several score lower 
level statements. 

Plotting has the equivalent GKS tools for 
graph and chart generation and their cap¬ 
tioning: hand it apples and oranges, say 
"pie", and it bakes the numbers into a 
digestible display for screen or plotters. 

Kernel and Plotting have tools to convert 
images they create to ANSI Computer 
Graphics Metafiles (CGMs), a tokenized 
standard for storing every form of graphic 
image as data. The Metafile Interpreter 


PRICES CUT! 

reads the contents of a CGM and inter¬ 
prets it with full CGI capability for re¬ 
creation on various devices. 

Quality software 9 IBM thinks so. They sell 
the GSS series under their own label. 

Unit royalties and annual fees have been 
instituted for redistribution. Needs 256k. 
Ask for: 

GS010 CGI Dvlpmt Toolkit 
GS020 Kernel System 
GS025 Kernel for IBM RT 
GS030 Plotting System 


Lattice now delivers smaller .EXE files, 
boasts very fast link times and a more effi¬ 
cient aliasing algorithm. New options 
generate code to use 80186 and 80286 
features; 8087 of course sensed and util¬ 
ized. Lattice has enjoyed pre-eminence so 
long that developers have created far 
more snap-on tools for Lattice C than any 
other compiler. William Hunt’s PC Tech 
Journal review of 12 compilers awarded 
Lattice the only "very good" rating for 
add-on library availability. 

Ask for: List: PC Brand: 

S0100 *500 *299 


BETTER BASIC 

Convert Microsoft BASIC. 
Structured, Compilable. 

C ombines the familiarity of BASIC with 
the best features of C, Pascal, and 
Modula 2, yet BetterBASIC is 100% com¬ 
patible with Microsoft's GW™ BASIC and 
IBM BASICA including graphics, sound, 
and assembly language calls. So load your 
old programs and RUN. SAVE and they are 
converted automatically to BetterBASIC! 

It’s big: Needs 192k; programs can go to 
the PC's full 640k. It's comfy: Behaves like 
M'soft BASIC at the interactive level, with a 
full-screen editor, direct statement execu¬ 
tion, and always poised to RUN. It’s fast: 
Each statement checked and compiled 
once, not every time encountered. Sieve 
runs 6 times faster than with M’soft. 

C-like structures house file records so 
goodbye to FIELD, MKI$, CVD, LSET, etc. 
Named "procedures" replace GOSUBs to 
linenumbers. Lots more features: built-in 
linker for compiled modules; trace; debug¬ 
ging breakpoints; cross-reference com¬ 
mand; 32k strings; DOS and BIOS calls and 
interrupts; recursion. Run-time module 


List: 

PC Brand: 

stores object code for redistribution. 

*495 

*375 

Ask for:: 

List: 

Us: 

*495 

*375 

S1200 BetterBASIC 

*195 

*165 

*795 

*645 

S1201 Run-time Module 

*250 

*225 

*495 

*375 

S1202 8087 Interface 

* 99 

* 85 

*295 

*235 

S1205 Btrieve Interface 

* 99 

* 85 


BTRIEVE ASK ABOUT XTRIEVE & RTRIEVE 

Queen B-tree File Manager Abdicates Royalties 


T here’s no longer a tithe to incorporate 
Btrieve™ in applications, a welcome 
proclamation if royalties would ruin your 
profit margins. Btrieve takes complete 
charge of all file creation, indexing, 
reading, writing, insertion, deletion, space 
recapture, forward and backward search¬ 
ing. It builds function call "commands" 
right into the language you use: interfaces 
to C, Pascal, BASIC, and COBOL, with sam¬ 
ple programs in all four, come with each 
copy. 

Btrieve has mainframe specifications! Its 
balanced-tree indexing scheme finds any 
key in a million in four or less accesses. 
Files may have up to 24 indexes; fixed 
record length to 4090 characters; indexes 
up to 255 characters; files of 4 billion bytes. 


Can even extend a file across two drives — 
even two hard disks! 

Version 4.x speeds DOS interaction for 
large multiply-keyed files; enables 
variable length records of virtually any 
length; verifies accuracy (optionally) with 
read after write, useful in gritty en¬ 
vironments; offers password and data 
encryption. 

There's also Xtrieve, for Btrieve file in¬ 
quiry and data manipulation, and Rtrieve 
for report writing. All three in versions for 
any network that supports the MS-DOS 3.1 
file sharing function. 

Ask for: List: PC Brand: 

S0650 *250 *195 

S0652 Network Version *595 *465 


TERMS AND CONDITIONS OF SALE 


Licenses: Each price is for a license fo use a prod¬ 
uct on a single computer and does not constitute 
its ownership. We will inquire for you about site 
licenses. Except as otherwise indicated or where 
follows the Product Code, products may be 
used to create programs for distribution without 
royalty payments or additional licenses, provided 
said programs do not substantially replicate the 
products themselves 

Compatibility: PC BRAND'S standard products 
are designed to operate with the IBM'* PC. XT or AT 
under PC-DOS and require no more than 128k of 
RAM unless indicated Non IBM machines using 
MS-DOS: contact manufacturer about precise dif¬ 
ferences so we can advise. 

Returns: See box page one Defective parts will be 
replaced Please call for authorization to return a 
product for refund. 


Payment: We honor MasterCard. Visa. American 
Express (no surcharge), checks in advance, or 
funds wired to PC Brand, c/o Chemical Bank. 126 
East 86St . New York, Account 034-016058 COD 
(U S. only) for cash, money order, certified check 
(no fee). NY State, add sales tax Purchase orders 
accepted from larger corporations and institutions 
at our discretion if you agree to net 30 days plus 2% 
a month late penalty thereafter. 

Shipping & Handling: U S UPS Surface. 1st 
product $6, each add'l $3. UPS 2nd Day Air: 1st 
product $10. each add'l $4.50 UPS Next Day Air or 
Federal Express 1-2 Day Air: 1st product $18. each 
add'l $6 FedEx Next Day 10 AM. 1st product $28. 
each add'l $7. International: Charges vary by 
destination and carrier. $10 per shipping container 
for export forms. Air parcel post at your risk beyond 
collected insurable amount 


For Orders, Literature, or Catalogs, Call Us at... 

800 PC-BRAND 

That’s (800) 722-7263. In NY State call (212) 242-3600 
PC Brand, 150 5th Ave., New York, N. Y. 10011-4311 
Telex: 667962 (SOFT COMM NYK) 

© 1986 PC BRAND 

Prices, terms, and specifications subject to change without notice. 












RONALD FLORENCE 


PC TECH JOURNAL 




T he rapid proliferation of micro¬ 
computers has created a PC cul¬ 
ture that, to a great extent, has 
trouble communicating with the older 
mainframe/minicomputer culture. Many 
mainframes and some minicomputers 
have hardware limitations that restrict 
asynchronous communications to de 
facto six- or seven-bit words and a lim¬ 
ited set of control characters (line feed, 
carriage return, backspace). By contrast, 
most PCs make no limitation on the use 
of all eight bits of each character. Each 
culture has evolved its own data trans¬ 
mission protocols, and only a few of 
these protocols have die capability 7 of 
translating between the two. 

In the world of PCs, the XMODEM 
protocol has become the lingua franca 
of machine-to-machine transfers. Al¬ 


though many businesses use proprietary 
transfers such as Microstuf Crosstalk or 
Hayes Smartcom, which, by using long 
data blocks of 512 bytes, are efficient 
and fast, these programs require both 
the receiver and sender to be set up for 
the same protocol. For bulletin boards, 
CompuServe, and direct machine-to-ma- 
chine links, XMODEM is the norm. Most 
PC communications programs, whether 
commercial or public domain, include 
it. The sidebar “The XMODEM Process,” 
on page 147, briefly explains the proto¬ 
col. (See also “Screenspeak,” Augie 
Hansen, November 1984, p. 151, for a 
discussion of Smartcom and XMODEM, 
and “High-tech Mimicry,” Augie Hansen, 
September 1984, p. 46, for a compar¬ 
ison of 10 communications packages, 
including Crosstalk.) 


Among mainframes and minicom¬ 
puters, however, XMODEM is virtually 
unknown, mainly because it uses all 
eight bits of each transmitted byte. To 
transfer binary data, the larger machines 
must use a protocol that includes a 
quoting mechanism to send eight-bit 
data in seven bits. The quoting mecha¬ 
nism prefixes a character with a quote 
character (# or &) to indicate that the 
high-order bit of the following charac¬ 
ter is set. The extra characters, includ¬ 
ing the additional quoting characters 
(which must be sent to indicate that a 
# in the data stream is only a # and 
not a quoting character), exact a high 
toll in terms of overhead. 

Kermit, the protocol developed at 
Columbia University to bridge main- 
frame-to-microcomputer transfers, is 


MARCH 1987 


145 


ILLUSTRATION • J A IAPINSKI 






XMODEM 


flexible, versatile, and reliable, with the 
capability of translating file-naming con¬ 
ventions and establishing a packet-ex¬ 
change handshake between machines. 
(See “Kermit,” Augie Hansen, January 
1985, p. 110). Kermit includes quoting 
mechanisms for machines that cannot 
send or receive eight-bit data. The price 
of this flexibility, however, is speed: be¬ 
cause Kermit transfers data in short 
packets of approximately 90 characters, 
it is somewhat slower than XMODEM. 

In any protocol transfer, each packet in¬ 
cludes die overhead of synchronization 
characters, packet numbers, checksums 
or CRCs (cyclic redundancy checks), 
and the wait for the acknowledgment 
from the remote machine. Hence, the 
shorter the packets, the greater the 
overhead. Kermit is available in some 
PC communications programs, but it is 
not used extensively. 

For many PC users, the most com¬ 
mon interaction with minicomputers 
takes place with systems running UNIX. 
Frequently, the only file-transfer proto¬ 
col available between the machines is 
an ASCII dump. A stty command on the 
UNIX machine can be used to map the 
line endings from the DOS CR-LF com¬ 
bination to the UNIX NL, or vice versa. 
To dump a file onto the UNIX system, 
the remote user enters the command 
cat > filename on the UNIX system. 
Anything sent from the remote terminal 
up to an EOF (Ctrl-D for most UNIX 
systems) is put into filename on the 
UNIX system. To dump an ASCII file 
from the UNIX machine to a PC logged 
on as a terminal, the user opens the 
capture file on the local machine and 
enters cat filename on the UNIX ma¬ 
chine. These simple procedures can be 
enhanced using UNIX commands such 
as mesg n, which prevents other users 
from writing to the terminal screen dur¬ 
ing the transfer, or echo, which signals 
the end of the transfer. 

These ASCII dumps are efficient, 
but they offer no error-checking (an in¬ 
creasingly important feature as long-dis¬ 
tance carriers compete by cutting line 
quality in conjunction with costs). Even 
if the connection is noise-free, a seven- 
bit ASCII dump cannot transfer binary 
files. For those who use UNIX machines 
with cross-compilers as software devel¬ 
opment systems for DOS, neither object 
files nor executable programs can be 
transferred between the UNIX system 
and a DOS machine using these ASCII 
dump procedures. For example, a de¬ 
veloper using his DOS machine at 
home with a modem as a terminal on a 
remote UNIX machine, could not down¬ 
load the executable DOS version of his 


program from the UNIX machine with¬ 
out an eight-bit protocol. 

In addition, UNIX-based machines 
are limited in their ability to call to 
other machines by the absence of the 
XMODEM protocol. The typical univer¬ 
sity or engineering super microcom¬ 
puter or minicomputer, running some 
version of UNIX, communicates with 
other UNIX machines using cu (call up) 
for interactive communications, or uucp 
(UNIX-to-UNIX communications pro¬ 
gram) for unattended file transfers. 

Both programs rely on a streamlined 
ASCII dump to transfer text or source 
files. For binary transfers, most UNIX 
systems use a version of Kermit. These 
programs work well for communica¬ 
tions between UNIX systems, but cu 
and C-Kermit (another such program) 
lack support for the file-transfer proto¬ 
cols used by most DOS bulletin boards 
and some large database systems. 

UNIX systems have no problem 
with eight-bit data, as long as the stty or 
ioctl( ) functions that condition the line 
are set for eight-bit characters. Thus, 
XMODEM should be adaptable for use 
on a UNIX system, so that a caller with 

IW systems can handle 
eight-bit data as long as the 
stty or ioctl() functions that 
condition the line are set 
for eight-bit characters. 


a PC can log on using a DOS terminal 
program, such as Crosstalk or Head¬ 
lands’ pc-talk, and make error-checked 
file transfers to and from the UNIX sys¬ 
tem using XMODEM. (See “pc-talk: 
Communications Control,” Will Fastie, 
September/October 1983, p. 162.) For 
UNIX users with sourceTicenses, the 
UNIX communications program also 
can be modified to include XMODEM. 

The code in listing 1 (XMODEM.C) 
is a module, written in C, that will han¬ 
dle the XMODEM transmission or re¬ 
ceipt of files to and from a UNIX sys¬ 
tem, using either checksum or CRC er¬ 
ror checking. (See “CRC Calculation,” 

W. David Schwaderer, April 1985, 
p. 118.) The code includes an option for 
the transfer of text files between a DOS 
machine and a UNIX machine; if the 
text option is invoked, the transfers will 
make the conversions between DOS 
CR-LF line-endings and UNIX NLs. 


XR AND XT 

Compiled with the code in listing 2 . 
(XR.C), the xmodem module produces 
a stand-alone remote XMODEM pro¬ 
gram for UNIX systems. The compiled 
program xr is linked with another file 
called xt. (A file link in UNIX creates 
two separate names for the same file.) 
XR.C parses to determine which name 
has been used to invoke the program: 
xr is invoked to receive files, xt to send 
files. The executable file(s) should be 
in a directory on the UNIX system that 
is on the default path of most users, 
such as /usr/bin or /usr/lbin. The invo¬ 
cation format for the two is the same 
except for the file name, either: 

xr [—ct] [-d errfile] filename 
or 

xt [-ct] [-d errfile] filename 

The -c option provides CRC error 
checking instead of the default check¬ 
sum; -t provides text file line-end con¬ 
versions; and -d provides verbose de¬ 
bugging information in a user-specified 
file on the UNIX system. 

To send a file to the UNIX system 
from the PC using XMODEM, the user 
would enter the command 

xr [options] filename 

on the UNIX system. The xr program 
checks to see if it can write the file on 
the UNIX system or announces that it 
cannot (if, for example, the user has 
given a path that has no write permis¬ 
sion). If the file already exists, instead 
of overwriting the file, xr will create 
filename “. This is a crude sort of colli¬ 
sion-protection scheme, which fails with 
longer (14-character) file names. 

The user then begins the XMODEM 
file transmission on the PC terminal 
program. To cancel the transfer, the PC 
sends a Ctrl-X, (the CAN character used 
by XMODEM), which is sent automati¬ 
cally by most XMODEM programs when 
a transfer is aborted. 

To send a file from the UNIX sys¬ 
tem to the PC, the user would enter 

xt [options] filename 

on the UNIX system. If the file exists, 
and can be read, xt announces that it is 
ready to begin the transfer and give the 
size in blocks of 128 bytes. Then, the 
user would invoke the XMODEM re¬ 
ceive procedure on the PC terminal 
program. The xt program automatically 
adjusts to the error-checking method 
specified by the receiver program. 
Again, Ctrl-X aborts the transfer. 

If the -t option is used to send text 
files or source code between a DOS 


146 


PC TECH JOURNAL 



THE XMODEM PROCESS 

The XMODEM protocol is prevalent 
as a method of file transfer in the PC 
environment. It was originally devel¬ 
oped by Ward Christensen for use 
on machines that were running CP/M 
operating systems. The protocol’s 
ability to send binary files with some 
error checking over less-than-perfect 
telephone lines is the reason for its 
widespread adoption. 

An XMODEM protocol file trans¬ 
fer between two computers is shown 
schematically in figure 1. The vertical 
bars show relative time proceeding 
downward. Various “messages” are 
depicted as arrows pointing in the 
direction of the receiver of the mes¬ 
sage. For the purposes of this discus¬ 
sion, it is assumed that the computer 
on the left is sending a file to the 
computer on the right. 

The transfer is initiated when 
the receiving computer sends an 
NAK (negative acknowledgment) 
message to the sending computer, 
indicating that it is ready to synch¬ 
ronize and receive a file. It will send 
NAK characters at 10-second intervals 
until the sender begins transmitting 
the file or until nine NAKs have 
been sent, indicating that the sender 
is not responding. 

Assuming that the sender synch¬ 
ronizes, the first block is transmitted. 
A block, depicted in figure 2, con¬ 
sists of an SOH (start of header) 
character, a block number (sequen¬ 
tial up to 254) expressed as an ASCII 
character followed by the character 
equivalent of the one’s complement 
of the block number, then 128 bytes 
of data, padded if necessary to fill 
the block, and a checksum value de¬ 
rived from the transmitted data. 

The checksum is calculated by 
adding the ASCII values of the char¬ 
acters in the 128-byte block, then 
ANDing the results with 255. If the 
receiver calculates the same check¬ 
sum value for the received data, an 
ACK (acknowledgment) is returned 
to the sender, indicating success. 
Failure is indicated by an NAK, 
which would result in a retransmis¬ 
sion of the block until it is received 
correctly or until nine retries have 
been made. When the sender has no 
more data to send to the receiver, it 
transmits an EOT (end of transmis¬ 
sion) character and awaits an ACK, 
which terminates the transfer. 

—Augie Hansen 


FIGURE I: A File Transfer via XMODEM 


SENDING RECEIVING 

COMPUTER COMPUTER 



The receiving computer (right) will send NAK (negative acknowledgment) 
characters at 10-second intervals until the sender begins transmitting the file or 
until nine NAKs have been sent, thus indicating the sender is not responding. 


FIGURE 2: XMODEM Block Description 


/- - --- 71 

SOH 

# 

# 

128 BYTES OF DATA 

CHECKSUM 


Each block of data that is to be transmitted must contain a full 128 bytes. If the 
block is shorter than 128 bytes, it must be padded to the full length. 


MARCH 1987 


147 
















































XMODEM 


system and a UNIX system, the file 
lengths on the UNIX machine will be 
shorter than the file lengths on the 
DOS machine. This is a result of the 
line-end conversions that take place. 

USING XMODEM WITH CU 

For users with UNIX (or XENIX) source 
licenses, the xmodem module can be 
compiled with a modified version of cu 
to provide XMODEM in the principal 
UNIX (or XENIX) communications pro¬ 
gram. The modified cu can be used to 
call a bulletin board or another remote 
computer that uses XMODEM for error- 
checked file transfers to and from the 
UNIX (or XENIX) system. 

The cu program, like many such 
programs in UNIX, uses fork( ) to estab¬ 
lish two parallel processes, one to re¬ 
ceive incoming data on the open com¬ 
munications line, the other to examine 
everything typed at the keyboard, pars¬ 
ing and interpreting commands, and 
sending the other characters out over 
the open line. To use xmodem, cu or 
another UNIX communications program 
requires the following code: 

• A command-parsing mechanism that 
recognizes the options (CRC instead 
of the default checksum error-check¬ 
ing, NL to CR-LF line-end conversion 
for text files, debugging mode). 


• Code to kill the receive fork of the 
communications program and recon¬ 
dition the open communications line 
to no parity, no stripping of characters 
to seven bits, no XON/XOFF protocol, 
and eight-bit characters. 

• A new fork to invoke xget( ) or 
xput( ) with the file name and the 
appropriate options. 

• A longjmp( ) to restart the receive 
process of the terminal program (and 
recondition the communications line 
back to its original settings) when the 
file transfer is complete. 

The options are passed by setting 
the appropriate bits in the integer pa¬ 
rameter options. The file pointer to the 
open file is passed in the parameter fp. 
The external file rlfd is the open com¬ 
munications line in cu. 

The -DCU compile option for 
XMODEM.C sets up the SIGINT signal 
(the DEL key) to cancel file transfers, 
and includes code to place a period (. ) 
on the screen for each successful packet 
transfer, or a percentage symbol ( % ) 
for each unsuccessful transmission. If 
the debug option is invoked, the screen 
prints verbose messages about failed 
packets. The xmodem module could be 
incorporated into another communica¬ 
tions program, such as C-Kermit, with 
minimal modifications. 


(t ONE COMMUNICATIONS 
PROGRAM THAT DOES 
AIL THIS ON DOS, 
UNIX, XENIX AND VMS? 

I CALL THAT II 
UNLIKELY... 


U THEY CALL IT 

TERM” 

COMMUNICATIONS SOFTWARE 


TERM is available now on AT&T, DEC VAX, 
MICROVAX, IBM XT, AT, Sun, Altos, HP series 200, 
300, Tandy, Fortune, Convergent, NCR, Sperry, 
Zilog, Plexus, Intel, Motorola and many others. 


CENTURY 

^ SOF T W A R E 

9558 South Pinedale 
VISA/MC sai, Lake City, Utah 84092 

(801) 531-8512 



Features: 

■ State-of-the-art Lempel- 
Ziv-Welch data 
compression 

■ Exact VT102 Emulation on 
ALL systems 

■ Full numeric keypad 
support 

■ Full color support 

■ 19.2K file transfers 

■ KERMIT Protocol for 
mainframes 

■ XMODEM Protocol for 
bulletin boards 

■ Remote PC execution 

■ Powerful script language 
for customized 
applications 

■ Wildcard file send/receive 
capability 

■ Auto-login, dial/redial 
modem control 

■ Unlimited autodial 
directory 

■ Performs unattended file 
transfers 

■ Remote maintenance 
capability 

■ Online User’s Manual for 
instant help 

■ Electronic mail/TELEX 
interface 


CIRCLE NO- 188 ON READER SERVICE CARD 


XMODEM.C 

The code in XMODEM.C is straightfor¬ 
ward. The NOREAD( ) and TX( ) macros 
and the err( ) function are used to sim¬ 
plify the code. Static chars, rather than 
define statements, are used for SOH 
(start of header), NAK (negative ac¬ 
knowledgement), ACK (acknowledge¬ 
ment), EOT (end of transmission), CAN 
(cancel), and crcinit, because the UNIX 
write( ) call needs the address of the 
character to be sent. A loop in xget( ) 
and the fillbuf( ) function manage the 
conversion to and from CR-LF line end¬ 
ings if the text option has been speci¬ 
fied. To allow the sender time to set up 
the XMODEM transmission before the 
synchronized characters are sent, a 
sleep(lO) call is used in xget( ). 

Sleep( ) is a library function that sus¬ 
pends execution for an interval. 

Few constraints are placed on the 
code for the XMODEM transmission 
functions; however, the XMODEM re¬ 
ceiver must be able to keep up with the 
sender’s transmissions. At 1,200 or even 
2,400 bps (bits per second), little dan¬ 
ger exists of losing characters; higher 
transmission speeds place demands on 
the code. To be certain that characters 
are not lost, the data bytes are not sent 
through the checksum or CRC genera¬ 
tor until the entire data block is re¬ 
ceived. Some XMODEM programs avail¬ 
able on bulletin boards update screen 
displays during packet transfers, with 
the result that they cannot run above 
1,200 bps without losing characters. 

The bit-level operators in C make 
the CRC generator a relatively simple 
function. The bytes that are to be added 
to the CRC are fed into the generator 
one bit at a time, high bit first. The bit 
is shifted into a 16-bit CRC accumulator, 
and, if the bit shifted out of the CRC 
accumulator is a 1, an exclusive-or is 
performed on the CRC accumulator us¬ 
ing the bit pattern 1021H. The process 
repeats for all eight bits of the input 
character. To make the CRC come out 
correctly for XMODEM, two zeros must 
be sent through the generator after the 
data bytes. These zeros take the place of 
the CRC bytes in the packet. 

The UNIX alarm signal (SIGALRM) 
is used to signal a time-out on the re¬ 
ceive function, by interrupting the sys¬ 
tem call read( ) in function rchar( ), 
which returns a -1 to indicate an error. 
Any other interruption to the read( ) 
also causes the read to signal a time-out 
and the program to recycle and request 
the block again. Programs that make 
high-priority system calls to the kernel, 
such as some windowing programs, in¬ 
terrupt read( ), but XMODEM is suffi- 


148 


PC TECH JOURNAL 












ACS-1000 

• 8 or 4.77 Mhz 

• Up to 1 Meg Memory 

• 2 Serial Ports 

• 1 Parallel Port 

• On-Board Floppy 
Controller 

• On-Board Clk/Calendar 


ET-286 plus 

• 10/6,12 & 16MHz 

• Up to 4 Meg Memory 
(Expanded or Extended) 

• 3 Serial Ports 

• 2 Parallel Ports 

• 8 Expansion Slots 

• On-Board Clk/Calendar 


NOW AVAILABLE: 

• Optional lOMhz 80287 

Coprocessor 

* Bundled LIM EMS Driver 


CIRCLE 103 ON READER SERVICE CARD 


IBM, UNIX, XENIX, LOTUS, INTEL and MICROSOFT are trademarks of their respective companies. 


Push Back 
The Envelope: 

10 / 6,12 

& 16 MHz 

EMS Capability 

IBM obviously positioned 
the AT as the hub of the 
microcomputer network. In 
this marketplace our prod¬ 
ucts stand out as the pinna¬ 
cle of performance and 
value. 

SPEED 

The ET-286 doubles the 
clock speed of the AT at 12 
MHz and we are already 16 
MHz capable. Naturally, the 
ET-286 toggles from Hyper¬ 
speed at 12MHz to 100% 
6MHz compatibility for those 
applications that demand it. 

MEMORY 

The ET-286 has access to 4 
Megabytes of on-board, 0 
wait state memory. This 
memory can be used as 
regular AT extended mem¬ 
ory, or, as Lotus/Intel/Micro¬ 
soft (LIM) expanded 
memory (EMS). The ability 
to utilize the memory on¬ 
board as either extended or 
expanded memory greatly 
enhances its use in scientific 
as well as business 
applications. 

COMMUNICATIONS 

There are three on board 
serial ports that are configu¬ 
rable as either RS-422 or 
RS-232 depending on the 
application. Two parallel 
ports further extend your 
communications ability. And 
there are still 8 expansion 
slots for additional I/O. 

CUSTOMER SUPPORT 

Part of the success of the 
ACS products is the avail¬ 
ability of our people. We 
provide the support that 
OEM's need in order to win 
major contracts: engineering 
support, competitive pricing 
specialized packaging, and 
American made products. 

ACS MS-DOS 3.2 

We want to help you com¬ 
pete. That's why we have 
licensed MS-DOS 3.2 and 
GW Basic 3.2 and made 
them available in OEM pack¬ 
ages at OEM prices. 


ACS International, Inc. 
2105 Luna Rd., Suite 330 
Carrollton, Texas 75006 

214-247-5151 
TELEX: 709748 ACS UD 






XMODEM 


ciently robust to immediately resend 
the packet. Function cksend( ) uses 
rchar( ) to clear the communications 
line before an ACK, NAK, or CAN is sent 
back to the XMODEM sender. 

XR.C 

The code for xr and xt uses stock UNIX 
C library functions to parse the com¬ 
mand line and to set the communica¬ 
tions line for the XMODEM transmis¬ 
sion. The initialization for the character 
trans??? determines whether the pro¬ 
gram has been invoked as xr or xt. 


The termio structures new and old 
are used to set and reset the line, and 
the structure stbuf is used to get the file 
size for files that are to be transmitted. 
The SIGINT and SIGQUIT traps prevent 
an accidental press of DEL or CtrlA 
from aborting the transmission, and the 
SIGHUP trap ensures the program’s 
cleanup in the event the telephone line 
is disconnected accidentally. 

The XMODEM protocol is quick 
and highly accurate for attended file 
transfers. The code in these modules 
requires that both sender and receiver 


HON ID 



I POWER 




Introducing Two New Powerful Packages, 
BlackStar Basic Development Tools 
and "C" Function Library 

BASIC DEVELOPMENT TOOLS features four-in-one 
"automatic programing" tools. Including SCREEN 
BUILDER, B+TREE, HELP MESSAGE SYSTEM 
and EZ SCREEN POP-UP WINDOWS. Can be used 
separately or together. Compatible with Microsoft 
QuickBASIC and Borland Turbo Basic. Comes with 220 
page manual and two diskettes. 

"C" FUNCTION LIBRARY New ANSI Standard with over 275 functions. 
A comprehensive development package for the latest "C" Compilers including 
Microsoft and Lattice. Complete source code and demo program, as well as 
small, medium and large memory models are included. Plus 317 page 
instruction manual and three diskettes. 

Special Offer! $99.00 each, both for $175.00 
For IBM PC and compatibles. M/C, VISA, add $3.00 for 
shipping and handling. California residents add 6.5%. 

Shipping outside U.S. and Canada add $15.00. 

60 Day Money Back Guarantee. 

ORDER TODAY! (800) 722-7853 

(213) 306-3020 in California 

24-Hour Rush Shipment (credit card orders only). 

Sterling Castle, 702 Washington Street, Suite 174 
Marina del Rey, CA 90292. 

B All trademarks acknowledged. 

CIRCLE NO. 198 ON READER SERVICE CARD 



STERLING 

CASTLE”' 

8 O F T W A R E . 


machines have the name of the file 
entered. Some newer versions of 
XMODEM include a batch-level protocol 
that sends file-name headers before 
each file. Code written tc( incorporate 
the batch protocol for transfers between 
UNIX and DOS machines would need 
to address the difference in the file¬ 
naming conventions of the two systems: 
DOS file names are limited to an eight- 
character name with a three-character 
suffix, use a backslash instead of a slash 
as the separator in path names (except 
DOS 2.x, which also allows the back¬ 
slash), and DOS translates file names to 
uppercase. UNIX permits file names in 
any combination up to 14 characters; 
the slash is used as a directory separa¬ 
tor; and file names, like commands, 
are case-sensitive, thus, MYFILE.DOS, 
myfile.dos, Myfile.dos, and mYfile.dos 
are all different file names. File names 
sent from a DOS system are acceptable 
to a UNIX system, but if they are not 
mapped to lowercase, they end up at 
the head of sorted directory listings. 
(Most UNIX file names are lowercase.) 
Many UNIX file names, because of their 
length, format, or the inclusion of char¬ 
acters outside the allowed DOS set, 
would not be acceptable to DOS ma¬ 
chines until they were translated to the 
format required by DOS. 

In addition to its uses in transfers 
between UNIX and DOS machines, 
XMODEM also can be a time-saver in 
transfers between UNIX systems. Send¬ 
ing files that have been compressed 
with pack and bundled with tar is sub¬ 
stantially faster than the ASCII dumps of 
cu and uuep. It is particularly conven¬ 
ient to be able to shift from ASCII to bi¬ 
nary transfers while using cu, instead of 
having to do some transfers with cu 
and others with C-Kermit. 

The XMODEM protocol is a useful 
bridge between DOS and UNIX. Its 
transfers are fast, simple, and reliable; 
moreover, it is sometimes the only 
means of uploading or downloading bi¬ 
nary files or of effecting error-checked 
transfers of text or source code files be¬ 
tween the two systems when a UNIX 
machine is used to develop DOS pro¬ 
grams or when a UNIX machine serves 
as a terminal for DOS bulletin boards. 
Indeed, this article and the accompany¬ 
ing code were transmitted from a 
XENIX system to a DOS machine at PC 
Tech Journal using XMODEM for 
XENIX and UNIX. 


Ronald Florence is a novelist and historian 
and a devotee of the UNIX operating system. 
His most recent published work is The 
Optimum Sailboat (Harper & Row, 1986). 


150 


PC TECH JOURNAL 


















Attachmate has answers to your questions 
about micro-mainframe communications. 
Hardware answers, software answers and 
now a guide packed full of answers to some 
important questions—questions worth asking 
before you make long-term decisions. 

What should you know about IBM® standards, 
multiple sessions, windows, file transfer, API, 
and graphics? 

You’ll find the answers and solutions in 
Attachmate’s Quick Reference Guide for 
Micro-Mainframe Communications —with a 


chart comparing IBM, IRMA®, and Attachmate. 
For a free copy, call toll free: 


1 - 800 - 426-6283 



Micro-Mainframe Technology: We put our heart in it! 

Attachmate Corporation 

3241118th S.E., Bellevue, WA 98005 

(206) 644-4010 

Copyright ®1986, Attachmate Corporation. IRMA is a registered trademark of Digital Communications 
Associates, Inc. IBM is a registered trademark of International Business Machines Corporation. 


CIRCLE NO. 165 ON READER SERVICE CARD 























BATCH FILES, 


I/O REDIRECTION 


SIDEKICK " 


DOS MENU PROGRAMS, 


MOST OF YOUR RAM, 


EXECUTION SPEED? 


SERVICE INTERRUPTS 

No assembly required 


RESIDENT PROGRAMS 

Easy, pop-up routines 


EXECUTIVE PROGRAMS 

Run ANY DOS program 


DISK SECTOR I/O 

Lowest level access 


FAST TEXT WINDOWS 

Virtual windowing system 


KEYBOARD MACROS 

Simple, powerful 


LOTS OF EXAMPLES 

21+ full example programs 


MUCH MORE. . . 

Over 140 routines in all 


LISTING 1: XMODEM.C 


/* XMODEM.C copyright 1986 Maple Lawn Farm, Inc. 

* exit: 0 if successful, -1 for failure, compile with mlfcu.c: 

* cc -i -0 -s -DCU mlfcu.c XMODEM.C -o cu or with XR.C: 


cc -i -0 -s XR.C XMODEM.C -o xr, In xr xt */ 


Compatible, efficient DOS 
multi-tasking. 

We designed Taskview with effi¬ 
ciency in mind. During normal 
operation, TASKVIEW hides 
behind DOS, providing you with 
control of up to 10 concurrent or 
non-concurrent programs. Just 
the touch of a key instantly 
switches a program to the fore¬ 
ground. Included desktop utili¬ 
ties let you cut and paste from 
program to program. Simple to 
use and reasonably priced, no 
well equipped PC user should 
be without it. 

Requires: PC/AT/Jr compatible, 
DOS 2.0-3.1, 256K RAM, 1 
Floppy drive. 

Taskview trademark of Sunnyhill Software 
Sidekick registered trademark of Borland Inti. 


^include <signal.h> 


WHY GIVE UP. 


extern int 
#define WFD 


/* error file for remote */ 


extern FILE 


#define DEBUG 
^define LF 
#define CRC 


30-day money back 
guarantee 

Dealer Inquiries Invited. 


#define NOREAD(x, c) (rchar(x, &c) 
#define TX(c) write(WFD, &c, 


#define ever 


Washington residents add 7.9% 
International orders add $5.00 
VISA and Mastercard accepted. 


Sunny Hill 
Software^^^ 

13732 Midvale N. Ste. 206 

Seattle. WA 98133 

(206) 367-0650 M-F. 8-6 PDT 


static char soh = 0x01 


To order Toll-Free 

call 1-800-367-0651 


crcinit 

cksum; 


CIRCLE NO. 158 ON READER SERVICE CARD 


crcsum; 


xget(fp, opts) 


“If you never thought Turbo 
Pascal was a systems program¬ 
ming language, you've never 
seen Turbo Professional.” 

Darryl Rubin 
Computer Language 

For programs that move with 
technology—Turbo Profession¬ 
al—a truly professional library 
of subroutines. 

150 page reference manual. 
Full source—many example 
programs. 

No royalties charged for 
applications. 

Requires IBM compatible, 

DOS version 2.0 or greater, 
Turbo Pascal 2.0 or greater. 

Turbo Professional, trademark of Sunnyhill Software 
Turbo Pascal, registered trademark of Borland International 


char buf[BSIZE] 


BSIZE, 


debug = (opts & DEBUG), 


signal(SIGALRM, onalarm) 


signaKSIGINT, kleenex) 


sleep(IO) 


(crc) ? TX(crcinit) : TX(nak) 
for ever ( 

if N0READO0, inch) C 


Dealer Inquiries Invited. 


err(“Timeout during SOH"); 
ckser»d(crc ? crcinit : nak) 
continue; 


oy plus $5.00 S&H 

Washington residents add 7.9% 
International orders add $5.00 
VISA and Mastercard accepted. 


Sunny Hill 
Software 

13732 Midvale N. Ste. 206 

Seattle. WA 98133 

(206) 367-0650 M-F. 8-6 PDT 


break; 


err("CAN block %u", b) 
kleenex(-l); 


To order Toll-Free 

call 1-800-367-0651 


CIRCLE NO. 152 ON READER SERVICE CARD 


PC TECH JOURNAL 











Still the only 
integrated 
scientific analysis, 
graphics, and data 
acquisition software. 

ASYST' 



Macmillan’s widely-acclaimed 
ASYST™ Scientific Software still 
offers more built-in capabilities than 
any other PC software. Its unique 
interactive programming environ¬ 
ment includes such functions as FFT, 
smoothing, integration, differentia¬ 
tion, curve fitting, statistics, differen¬ 
tial equations, and matrix and 
polynomial operations. And all func¬ 
tions are supported by sophisticated 
graphics, such as error bars, scatter 
plots, and axonometric plotting. 



ASYST’s extensive function set 
provides the building-blocks that let 
you assemble scientific applications- 
fast. RS-232 and optional A/D and 


GPIB/IEEE-488 support offer inter¬ 
face versatility you just can’t get from 
other products. And all hardware sup¬ 
port integrates seamlessly with the 
full range of ASYST capabilities. 

Free technical support. 60 days of 
free technical support help you design, 
set up, and fine-tune the perfect sys¬ 
tem. Ongoing support is available at 
a nominal cost. 

30-Day No-Risk Offer. 
CALL 1-800-348-0033. 

In New York state, (212) 702-3241. 

Ask for technical literature, including 
performance benchmarks. 

See Us at Pitcon. 

Booths 26034-26036. 

Macmillan 
Software Co. 

An affiliate of Macmillan Publishing Company 

630 Third Avenue, New York, NY 10017 


ASYST is a trademark of Macmillan Software Co. ASYSTwas developed by Adaptable Laboratories Software, P.O. Box 18448, Rochester, NY 14618 

CIRCLE NO. 110 ON READER SERVICE CARD 















XMODEM 



The ultimate solution 

for information interchange... 

The ultimate 9-track 
magnetic 
tape subsystem 
for the IBM- PC /XT/AT 
and compatibles! 


Innovative 
Data Technology 
offers a variety of 1/2 
inch 9-track magnetic tape sub¬ 
systems for the IBM-PC/XT/AT featuring 
the new “LEO” PC tape controller. 

“LEO” is a state-of-the-art PC tape controller that 
lends itself to the most sophisticated applications in¬ 
cluding real time data acquisition, multitasking and 
true streaming disk back-up. “LEO” comes standard 
with an impressive list of features that include a dedi¬ 
cated microprocessor, up to 64K of RAM for buf¬ 
fering, high speed thruput with memory mapping 
I/O—no DMA channel required, ASCII to EBCDIC 
code conversion and external cable connectors for 
easy installation. 

Supplied on a 5 1/4" diskette is the most compre¬ 
hensive set of software drivers and utilities available. 
Users have a choice between an installable I/O driver 
with modules to “Basic” and “C” languages, or an 
MT-DOS device driver, which allows direct tape access 
under any language supported by DOS 3.1. Also in¬ 
cluded is “ANSI,” a sophisticated file transfer utility, 
“TAP” a comprehensive disk back-up and restore util¬ 
ity and “TCMD” tape command, a valuable tool for in¬ 
specting tape data and format. All utilities are menu 
driven with help screens for user friendly operation. 

IDT manufactures the complete subsystem ... con¬ 
troller and tape drive. With a commitment to excel¬ 
lence, IDT staffs a complete customer service 
department, offering you assistance to assure top per¬ 
formance at all times. Contact us today for additional 
information. 


INNOVATIVE 

DATA 

TECHNOLOGY 

5340 Eastgate Mall • San Diego, CA 92121 
(619) 587-0555 • TWX: (910) 335-1610 
Western Regional Office: 

10061 Talbert Ave., Suite 202 

Fountain Valley, CA 92078 • (714) 968-8082 

Eastern Regional Office: 

One Greentree Center, Suite 201 
Marlton, NJ 08053 

(609) 596-4538 • TWX: (710) 833-9888 


if (inch != soh) C 

errC'Bad SOH block %u: %#x», b, (inch & 0xff>); 

cksend(nak); 

continue; 

> 

if NOREAD(2, inch) C 

errC'Timeout block %u during blocknum", b); 

cksend(nak); 

continue; 

> 

if ((inch & Oxff) != b) C 

errC'Expected blocknum %u, got %u", b, (inch & Oxff)); 

cksend(nak); 

continue; 

> 

if N0READ(2, inch) C 

errC'Timeout block %u during -blocknum", b); 

cksend(nak); 

continue; 

) 

if ((inch & Oxff) != (~b & Oxff)) { 

errC'Expected -blocknum %u, got %u", 

(-b & Oxff), (inch & Oxff)); 
cksend(nak); 
continue; 

> 

/* Read in 128 byte block without taking time for checksums or crc. */ 
for (i = 0; i < BSIZE; i++) 
if N0READ(2, buf[i]) 
break; 

if (i < BSIZE) { 

errC'Timeout data recv, char #%d", i); 

cksend(nak); 

continue; 

> 

if (crc) { 

if NOREAD(2, crchi) C 

errC'Timeout crc hibyte"); 

cksend(nak); 

continue; 

> 

crchi &= Oxff; 

> 

if N0READ(2, inch) C 

errC'Timeout %s", (crc) ? "crc lobyte" : "checksum"); 

cksend(nak); 

continue; 

> 

/* Now, when we have the whole packet, do the checksum or crc. */ 
for (cksum = 0, crcsum = 0, i = 0; i < BSIZE; i++) 
upsum(buf[i]); 
if (crc) C 

upsum(O); /* needed for crcsum */ 

upsum(O); 

if ((inch & Oxff) + (crchi « 8) != crcsum) { 
errC'Expected crc %u, got %u", 

crcsum, (inch & Oxff) + (crchi « 8)); 
cksend(nak); 
continue; 

> 

> 

else { 

cksum %= 256; 

if (cksum != (inch & Oxff)) i 

errC'Expected checksum %u, got %u", 
cksum, (inch & Oxff)); 
cksend(nak); 
continue; 

> 

TX(ack); 

#ifdef CU 

putc('.', stderr); 

#endif 

if (opts & LF) 

for (i=0, iput=0; i < BSIZE; i++) i 

if (buf[i] == 0x1a) /* old ms-dos eof */ 

break; 

if (buf[i] != '\r•> 

buf[iput++3 = bufti]; 

> 


154 


CIRCLE NO. 108 ON READER SERVICE CARD 


PC TECH JOURNAL 












Any Software. 

Any Monitor. Any Time. 




Any Software on a 
TTL Monochrome Monitor 


Any Software on an RGB 
Color Monitor 3 



Any Software on 
an EGA Monitor 


Upgrade to EGA without an EGA Monitor 

The unique ATI EGA WONDER allows upgrade to the 
new EGA graphics standard without the purchase of an 
expensive EGA monitor. EGA WONDER runs EGA, CGA, 
MDA, Hercules and 132 column software on EGA Color, 
RGB Color, TTL Monochrome and Composite monitors. 
Extremely flexible, EGA WONDER maintains downward 
compatibility to both existing software and existing 
monitors. On the internal monitor of a Compaq PC 
Portable, EGA WONDER displays EGA, CGA, MDA and 
Hercules software via an optional expansion module. 1 2 For 
EGA monitor users, the ATI EGA WONDER improves 
the display of CGA software by producing high resolution 
8x14 text and double scanned graphics. Old CGA software 


Trademarks IBM PC Portable - EGA CGA MDA - International Business Machines - Compaq - 
Compaq Computer Corporation - Hercules - Hercules Computer Technology - Polaroid Palette - 
Polaroid Corporation. 

1. Any Software, Any Monitor, Any Time applies to IBM graphics, standards, monitors, software. 

2. Optional Compaq Expansion Module (no 132 Columns) Suggested list price $99. 

3. EGA, MDA, Hercules software displayed via interlacing. Flickering effect of interlacing 
reduced with purchase of anti-glare screen filter. 


is now displayed with EGA quality. Completely compatible 
to IBM’s EGA, ATI’s EGA WONDER performs smooth 
scrolling, pixel panning and windowing. No memory modules 
are required because 256K of video memory is a standard 
feature. EGA WONDER is the only card able to display 
EGA software on the internal monitor of both the IBM PC 
Portable and the Compaq PC Portable. EGA WONDER 
provides an NTSC Composite signal for interface to a 
Polaroid Palette. 

SoftSense Automatic Mode Switching 
User friendly and easy to use, the ATI EGA WONDER 
has built-in SoftSense Automatic Mode Switching. It is 
actually able to sense and automatically switch between 
EGA and CGA color modes or between EGA, MDA and 
Hercules monochrome modes. The ATI EGA WONDER 
is compatible at the hardware level to the IBM Enhanced 
Graphics Adapter, the IBM Color/Graphics Adapter, the 
EBM Monochrome Display Adapter and the Hercules 
Graphics Card to minimize software incompatibilities. 

EGA WONDER is now available from all major computer 

stores, call us today at (416) 477-8804 for more information. 



Technology you can Trust. 


ATI Technologies Inc., 450 Esna Park Dr., 

Markham, Ontario, Canada L3R 1H5. TLX. 06-966640. 



$399 
Suggested 
list price 










XMODEM 



fwrite(buf, iput, 1, fp); 
b++; 

b %= 256; 


TX(eot); 

if N0READO5, inch) C 

err("Timeout during EOT"); 


> 


continue; 


TX(ack); 


> 


kleenex(O); 


if (inch == can) t 


} 


errO'CAN during EOT"); 




kleenex(-l); 


xput(fp, opts) 


> 


FILE *fp; 


if (inch != ack) { 


int opts; 


err("Non-ACK during EOT: %#x", inch); 


C 


continue; 


register i; 


> 


char buf(BSIZE], 


break; 


b = 1, 


> 


cb. 


kleenex(O); 


crclo. 


} 


inch; 




int cread; 


fillbuf(fp, buf, If) 




FILE *fp; 


#ifdef CU 


char *buf; 


signal(SIGINT, kleenex); 


int If; 


#endif 


C 


signal(SIGALRM, onalarm); 


int i = 0, c; 


debug = (opts & DEBUG); 


static int cr_held; 


rchar(60, &cb); 


if (cr_held) { 


if (cb == crcinit) 


bufti] = '\n'; 


crc = 1; 


i++; 


else if (cb == nak) 


cr_held-•; 


crc = 0; 


> 


else { 


for (; i < BSIZE; i++) C 


errO'No startup %s», (crc) ? «"C"' : “NAK"); 


if ((c = getc(fp)) == EOF) 


kleenex(-l); 


break; 


> 


if (c == 1 \n' && If) C 


cread = fillbuf(fp, buf, (opts & LF)); 


bufti] = 1 \r •; 


while (cread) C 


if (i == 127) < 


for (i = cread; i < BSIZE; i++) 


cr_held++; 


buftil = 0; 


return BSIZE; 


TX(soh); 


> 


TX(b); 


bufti+1] = '\n'; 


cb = (~b & Oxff); 


i++; 


TX(cb); 


) 


write(WFD, buf, BSIZE); 


else 


for (cksum = 0, crcsum = 0, i = 0; i < BSIZE; i++) 


bufti] = c; 


upsum (buf ti3); 


> 


if (crc) C 


return i; 


upsum(0); /* needed for crcsum */ 


y 


upsum(O); 




crclo = crcsum; 


upsum(c) 


cb = (crcsum » 8); 


char c; 


TX(cb); 


l 


TX(crclo); 


register unsigned shift; 


> 


register unsigned flag; 


else i 




cksum %= 256; 


if (crc) 


TX(cksum); 


for (shift = 0x80; shift; shift »= 1) f 


> 


flag = (crcsum & 0x8000); 


if N0READ(15, inch) { 


crcsum «= 1; 


err("Timeout after block %u", b); 


crcsum |= ((shift & c) ? 1 : 0); 


continue; 


if (flag) 


> 


crcsum A = 0x1021; 


if (inch == can) { 


> 


errO'CAN after block %u", b); 


else 


kleenex(-l); 


cksum += c; 


> 


> 


if (inch != ack) C 




err("Non-ACK after block %u: %#x", b, inch); 


/* Timeout in rcharO works by deliberately interrupting the read() 


continue; 


* system call. errno=EINTR, so no reason for a perrorO autopsy. */ 


> 


rchar(timeout, cp) 


#i fdef CU 


unsigned timeout; 


putcC.', stderr); 


char *cp; 


#else 


< 


if (debug) 


int c; 


fprintf(errf, "Validated block %u\n", b); 




#endif 


alarm(timeout); 


cread = fillbuf(fp, buf, (opts & LF)); 


if ((c = read(RFD, cp, 1)) == -1) 


b++; 


return -1; 


b %= 256; 


alarm(O); 


> 


return c; 


for ever { 


> 


156 


PC TECH JOURNAL 





XMODEM 



onalarmC) 


signal($IGALRM, onalarm); 


kleenex(sig) 
int sig; . 


#ifdef CU 

if (sig > 0) 

cksend(can); 

else 

fprintf(stderr, u \r\nFile transfer %s.", 

(sig) ? "cancelled" : "complete 11 ); 
fprintf(stderr, "\r\n"); 

#else 

printfO'File transfer %s.\r\n", (sig) ? "cancelled" 
resetlineO; 

#endif 

exit(sig); 


'complete"), 


cksend(ch) 
char ch; 


do ( 

j = rchar(2, &cp), 
> while (j != *1); 
TX(ch); 


/* VARARGS1 */ 
err(s, i, j) 
char *s; 

int i, j; 


if (debug) ( 


fprintf(errf, s, i # j) 


#ifndef CU 


fprintf(errf, "\n"); 


#else 


fprintf(errf, "\r\n") 


putc('%', stderr), 


#endif 


LISTING 2: XR.C 




r * XR.C - remote xmodem functions for xenix/unix 

* copyright 1986 Haple Lawn Farm, Inc. 

% usage: xr|xt Oct] t*d errfile] file 

* -c crc (instead of checksum), -t text mode (CR-NL <-> NL) 

* compile: cc -i -0 -s XR.C XMODEM.C -o xr 

* In xr xt 

* To avoid overwriting existing files, received file with same name 

* as an existing file is stored as fname-. ♦/ 


^include <signal.h> 
#include <stdio.h> 
#include <fcntl.h> 
#include <sys/ioctl.h> 
#include <sys/types.h> 
^include <sys/stat.h> 
#include <termio.h> 


#define DEBUG 
#define LF 
tfdefine CRC 
#define BSIZE 
^define errx(m,f) 


128 

printf("%s: 1 
printf(m, f) 
printf("\n'') 
exit(1) 


pname), \ 


FILE *errf; 



struct termio 


hangup() 


resetlineO, 

exit(1); 


char t *pname, 

trans = (av[0]Cstrlen(avCO)) -1] 
♦fname; 

int c, opts = 0; 
struct stat stbuf; 
extern int optind; 
extern char* ♦optarg; 

FILE *fp; 


pname = *av; 

while ((c = getopt(ac, av, "ctd:?")) 
switch (c) ( 

case *t‘ : 

opts |= LF; 
break; 


opts |= CRC; 
break; 


opts |= DEBUG; ■ 

if (!(errf = fopen(optarg, "w"))) 
errxO'can't open %s", optarg) 
setbuf(errf, NULL); 
break; 


printf("usage: %s Oct] C*d errfile] v file\n", pname); 
exit(l); 


if (ac ==*1 11 ac == optind) 
errxO'need file name", NULL); 
fname s av[optind); 

if (trans && !(fp = fopen(fname, "r"))) 
errxO'can't open %s", fname);' 
if (!trans) ( 
if (!access(fname, 0)) 

strcat(fname, "-"); 
if (iffp « fopen(fname, "w"))) 
errxO'can't write %s", fname); 




printfO'Ready to %s %s\n", (trans) ? "send":"receive", fname), 
if (trans) ..C..,,..,, ... ; ^. 

stpt(fname, &stbuf); 
printf("%d blocks (128 bytes/block)\n", 
stbuf.st_size/BSIZE+1); 


printf("Ctrl-X to abort transfer\n") 


signaKSIGINT, SIGJGN); 
Signal(SIGQUIT, SIGJGN); \ 
signal(SlGHUP; hangup); 


ioctlO, TCGETA, &old); 
ioct1(1, TCGETA, &new); 
fflush(stdin); 

new.C_lflag = IGNBRK|IGNPAR; 
new,c_oflag » 0; ; : 

new.c_lflag = 0; 
new.c_cc[4] = 1; 
new.c_cflag &= -PARENB; 
new.c_cflag |» CS8; 
ioctld, TCSETAW, &new); 


(trans) ? xput(fp, opts) : xget(fp, opts) 


ioctlO, TCSETA, Sold) 


MARCH 1987 



Announcing Magic PC—the first breakthrough for database applications developers in over 20 years: 

Now you can develop professional applications 
1000 % faster than your 4GL or DBMS, totally 
free from programming, commands and syntax! 



A Magic PC program looks as simple as this. To design an application you quickly fill-in menu-driven decision 
tables without having to write a single line of code. For example, just by highlighting the Execute Program 
operation on this screen and also highlighting the Item List program in the Program Menu, you tell Magic 
PC to pop-up the Item List window shown in the adjacent screen, when the end-user hits the Zoom key. 


Magic PC gives your end-user the power to harness and retrieve data instantly, without any commands or 
syntax because at runtime you already have built-in options to Add, Delete. Modify, Query and get on-the- 
spot ad-hoc information simply by highlighting selections from menus. Dats validation, security and 
error-checking are done automatically for you by Magic PC without programming. 


Who needs another DBMS? 

At last, Magic PC gives you the ultimate applications 
design tool, far ahead of 4GL’s, DBMS and Applica¬ 
tion Generators. 

Magic PC breaks through the language barrier with 
the revolutionary Un-Language concept: 

NO PROGRAMMING, COMMANDS OR 
SYNTAX! 

Free yourself from your programming language 

Magic PC makes you, the professional, completely 
free from the drudgery of procedural programming. No 
more cryptic commands, syntax or unforgiving 
procedural structures, because Magic PC does all the 
programming automatically. There’s your competitive 
edge. The rest is up to you... 

The Professional Choice 

Already an international success. Magic PC is a profit 
maker and career booster for DP Consultants, System 
Integrators, VARs, MIS professionals, System Analysts, 
Programmer Analysts and Software Engineers. If you 
design PC applications professionally, you can’t afford 
not to Un-Language now. 

IBM France: “IBM encourages this introduction and 
can not help but salute such evolution...” 

Israeli Air Force: “We were convinced that it was not 
possible to have a design tool powerful enough to im¬ 
plement real-life applications without a programming 
language. Magic PC changed our mind...” 

Jeff Duntemann, PC Tech Journal: “It’s probably 
the best integrated database applications and screen 
generator that I have ever seen.. .very smooth system, 
and smoothness comes at a premium these days...” 

The Magic PC Secret 

You’re so much more productive with Magic PC 
because there is absolutely no programming to slow 
you down. You design a Magic PC application by simp¬ 
ly filling-in the Data Dictionary Tables (Files, Fields, 
Keys) and the Task Description Thbles (Operations and 
Expressions). 

Only 13 design Operations harness the power of 
Magic PC. Operations are specific enough to eliminate 
the need for tiresome syntax, yet elastic enough to pro¬ 
duce robust custom applications. Use the Operations 
to describe what you want and Magic PC makes it 
happen. It’s that simple. 


Make Task nesting power available with a single 
Execute Task Operation. This powerful instruction 
triggers Magic PC to execute and display additional 
tasks or even external applications through Window 
Zooms. The 3-dimensional effect of Window Zoom¬ 
ing lets you probe deep into your application through 
nested windows and manipulate the data underneath. 

You describe a Magic PC Task or Program (com¬ 
posite Tasks) by filling your system analysis flow into 
the Task Description Tables. Choose the participating 
Data View, and Magic PC executes your desired Opera¬ 
tions. You interface with the Tables by highlighting your 
selections from pop-up menu-driven windows. There’s 
nothing to edit except your headings. 

You’re not confined to any particular design sequence 
as you are with most procedural languages. You can 
enter and change any Table spontaneously, on the fly, 
as ideas come to mind and Magic PC automatically 
maintains the application integrity. 

A Magic Inference Engine automatically or¬ 
chestrates your Task Description Tables into a single 
file of internal Knowledge Base Rules for optimum, 
bug-free performance. Knowledge Base Rules are ex¬ 
ecuted by the Magic Run engine for stand-alone run¬ 
time operation, or by the Magic Lan engine for 
unrestricted Novell network sharing. You’re free to 
design the Knowledge Base without worrying about the 


internal structure. 

Discover fast, 
language-free 
programming 
at no risk ^ 
for only 


19 


.95 



See for yourself how fast you can program language- 
free applications with our low-cost limited offei 
You’ll get the full Magic PC software unprotected and 
limited to 100 records and 450 page documentation 
complete with a free Order Entry sample application. 
You’ll also get our free telephone support for 90 days! 

And your $19.95 will be credited towards the full $695 
Magic PC purchase price. Even if you don’t buy Magic 
PC right away, keep your $19.95 Magic PC Trial as your 
application prototyping tool at this bargain price. 

Our No-Risk Guarantee! 

You have our no-risk 30-day money-back guarantee: 
if you’re not completely satisfied for any reason, ever 
Magic PC Trial for $19.95, send it back for a refund 

Order now while supply lasts 

Call this toll free number now with your Visa 
MasterCard or American Express for immediate 
delivery, or send the Order Coupon below today to Akei 

1-800-345-MAGIC 

in CA call 714-250-1718 


Yes, please rush me: 

□ Magic PC Trial $ 19.95 

□ Magic PC $695.00 

Add shipping $ 5.00 

In CA 6% tax $_ 

Prices valid in US only. Total $_ 

Ship to:___ 

Address:-- 

City/ST/Zip:_ 

Phone:_ 



Aker Corp. 18007 Skypark Circle B2, Irvine, CA 92714 
(714) 250-1718, Elec. Mail Dialcom41:AKR001 Telex 4931184 
AKR UI OEM and VAR inquiries are welcome. 
CIRCLE NO. 153 ON READER SERVICE CARD 

Min. requirements PC DOS 2.0. IBM PC or 100% compatible with 512K and hard disl 
©1986 Aker Corp. Printed 1/87 Trademarks: Magic PC. Un-Language. Window Zoon 
Magic Run. Magic LAN and Magic PC Trial are trademarks of Aker Corp.. IBM Pi 
and PC-DOS are trademarks of IBM Corp.. Novell is a trademark of Novell Inc. 





























































PROGRAMMING PRACTICES MICHAEL COVINGTON 

Procedural Algorithms in Prolog 

Strategies are presented for expressing algorithms in Prolog 
as well as translating algorithms from other languages. 



E ffective programming is aided by the 
use of reference books that are com¬ 
plete, and most Prolog textbooks do a 
thorough job of explaining how to ex¬ 
press information in Prolog. For exam¬ 
ple, bird(tweety). means “Tweety is a 
bird,” and fly(X)bird(X). means “X 
flies if X is a bird.” 

Much less has been written about 
how to express algorithms in Prolog. 
Often, a computation is best described 
not as a set of properties and relations, 
but as a procedure—perhaps one that 
already has been developed and de¬ 
bugged in a conventional language. 

This article presents strategies for 
translating algorithms from other lan¬ 
guages into Prolog. The examples are in 
standard Edinburgh Prolog and will run 
in most implementations without modi¬ 
fication. Except where noted, the tech¬ 
niques are equally applicable to Bor¬ 
land’s Turbo Prolog, though the sample 
programs will require changes, such as 
adding declarations and changing I/O 
statements. (For a review of three Pro¬ 
log compilers, see “Prolog Arrives,” 
Michael Covington and Andre Vellino, 
November 1986, p. 52. See also “Pro¬ 
gramming in Logic,” Michael Covington, 
December 1985, p. 82 and January 1986, 
p. 145; and “Programming for AI,” Ex¬ 
pert Consultant: Applied AI , Richard L. 
Schwartz and Robert E. Shostak, Decem¬ 
ber 1986, p. 191.) 

Prolog is often described as a non¬ 
procedural language. It is really a semi¬ 
procedural language; a compromise be¬ 
tween procedural and nonprocedural 
programming, it yields some advantages 
of each. In a truly nonprocedural lan¬ 
guage, the programmer would specify 
only a logically rigorous set of condi¬ 
tions the program must fulfill; the com¬ 
puter would then automatically gener¬ 
ate an algorithm from them. Such fac¬ 
tors as the order in which the condi¬ 
tions were written thus have no effect. 

In the interest of efficiency, Prolog 
contains some procedural elements. 


The Prolog programmer specifies not 
only the rules and facts to be used in 
solving a problem, but also the order in 
which they are to be attempted. Cru¬ 
cially, the programmer can even specify 
that some potential paths to a solution 
should not be tried at all. This makes it 
possible to carry out computations that 
would be severely inefficient, or even 
impossible, in pure Prolog. 

The key principle of Prolog is the 
procedural interpretation of logic. Con¬ 
sider the following Prolog rule set: 

in_north_america (X) in_usa(X). 
in_usa(X) in__georgia(X). 
in _georgia ( atlanta ). 

This can be interpreted as a set of facts 

X is in North America if X is in the USA 
X is in the USA if X is in Georgia. 

Atlanta is in Georgia. 

or as a set of procedure definitions 

To prove that X is in North America, 
prove that X is in the USA 
To prove that X is in the USA, 
prove that X is in Georgia. 

To prove that Atlanta is in Georgia, 
do nothing. 

The unfamiliar task of drawing infer¬ 
ences from data is thereby reduced to 
the familiar task of calling procedures. 


Prolog predicate definitions will be 
referred to throughout this article as 
procedures , and goals will be referred 
to as procedure calls. 

CONDITIONAL EXECUTION 

A very important difference between 
Prolog and other programming lan¬ 
guages is that, in general, Prolog proce¬ 
dures have multiple definitions (or 
clauses), each being applied under dif¬ 
ferent conditions. In Prolog, conditional 
execution is expressed, not with if or 
case statements, but with these alterna¬ 
tive definitions of procedures. 

Consider for example how the 
following Pascal procedure might be 
translated into Prolog: 

procedure writename(X:integer); 
begin 
case X of 
1 : write(‘One’); 

2 : write (‘Two’); 

3: write (‘Three’) 
end 
end; 

This tanslation could be done by giving 
writename three definitions: 

writename(l) write(‘One’). 
writename(2) write(‘Two ? ). 
writename(3) write (‘Three’). 


MARCH 1987 


159 


ILLUSTRATION • MACIEK ALBRECHT 





PROGRAMMING PRACTICES 


Each definition matches in exactly one 
of the three cases. A common mistake is 
to write the clauses as follows: 

/* poor style */ 

writename(X) X= 1, write(‘One’). 
writename(X) X = 2, write(Two’). 
writename(X) X= 3, write (‘Three’). 

This gives correct results but wastes 
time. Because X is a variable, each 
clause matches every procedure call; so 
the computer tries each clause, gets 
part way into it, and then backs out if X 
has the wrong value. It is faster to de¬ 
sign the clauses so that only the correct 
one can be invoked in the first place. 

A key to effective programming in 
Prolog is to make each logical unit into 
a separate procedure. Each if or case 
statement should, in general, become a 
procedure call. For example, the hypo¬ 
thetical Pascal procedure: 

procedure a(X:integer); 
begin 
b; 

if X=0 then c else d; 
e 

end; 

should go into Prolog as follows: 

a(X)b, 

c_or_d(X), 

e. 

c_or_d(0) :- c. 
c_or__d(X) :- XOO, d. 

This imposes a disciplined organization 
that is even more rigorous than the 
structured (“goto-less”) programming 
style that underlies Pascal; C, and Ada. 

Consider another version of 
writename that includes a catch-all 
clause to deal with numbers the names 
of which are not given: 

procedure writename (Xrinteger); 
begin 
case X of 

1: write (‘One’); 

2: write (‘Two’); 

3: write (‘Three’) 
else 

write(‘Out of range’) 
end 
end; 

(Standard Pascal does not allow the use 
of else with the case statement, but 
most popular compilers do.) One way 
to express the same algorithm in Prolog 
is the following: 
writename(l) write(‘One’). 
writename (2) write (‘Two’). 
writename(3) write (‘Three’). 
writename(X) X<1, write(‘Out of range’). 
writename(X) X>3, write(‘Out of range’). 


This gives correct results but lacks con¬ 
ciseness. In order to make sure that 
only one clause can be executed with 
each number, the value of X was tested 
in each of the last two clauses. In order 
to tell the program to print “Out of 
range” for any number that has not 
matched any of the first three clauses, 
the following clauses could be tried, 
with limited success: 

/* incorrect */ 

writename(l) write(‘One’). 
writename(2) write(Two’). 
writename(3) write (‘Three’). 
writename(_) write(‘Out of range’). 

(Recall that the anonymous variable, 
written as _, matches anything.) The 
problem here is that the goal 
writename(l), for example, matches 
both the first clause and the last clause. 
If a subsequent goal fails and causes 
backtracking through this one, the goal 
writename(l) will have two solutions: 
one that prints “One” and one that 
prints “Out of range.” 

Writename should be determinis¬ 
tic —that is, it should give exactly one 
solution for any given set of parameters 
and not give alternative solutions upon 
backtracking. Therefore, if any of the 
first three clauses succeeds, the com¬ 
puter should be told not to try the last 
clause. This can be done with the cut 
operator (written as ! ). 

The cut operator commits the com¬ 
puter to take a particular (or potential) 
solution without trying alternatives. Sup¬ 
pose that b is defined as follows: 

b c, d,!, e, f. 
b g, h. 

and that the current goal is b. If the cut 
is executed on the first clause, then it 
becomes impossible to look for alterna¬ 
tive solutions to c and d (the goals that 
precede the cut in the same clause) or 
to b (the goal that invoked the clause 
containing the cut). It remains possible, 
of course, to backtrack all the way past 
b —outside the scope of the cut—and 
look for alternatives to the clause that 
caused b to be invoked. 

What is needed to do in the incor¬ 
rect writename expression is to put. a 
cut in each of the first three clauses. 
This changes their meaning slighdy, so 
that the first clause (for example) says, 
“If the parameter is 1, then write ‘One’ 
and do not try any other clauses.” 

writename( 1) :-!, write (‘One’). 
writename(2) :-!, write(‘Two’). 
writename(3) !, write (‘Three’), 

writename (_) write (‘Out of range’). 


Because write is deterministic, it does 
not matter whether the cut is written 
before or after the call to write. Pro¬ 
grams are usually more readable, how¬ 
ever, if cuts are made early. 

GUARANTEEING THE OUTCOME 

In order to control the flow of program 
execution, it is often necessary to guar¬ 
antee that a goal will succeed regardless 
of the results of the computation that it 
performs. Occasionally, it is necessary 
to guarantee that a goal will always fail. 

An easy way to make any proce¬ 
dure succeed is to add a clause to it 
that succeeds with any parameters and 
is attempted last: 

f(X,Y) X<Y,!, write(‘X less than Y*). 

f(_,_). 

A call to f succeeds with any parame¬ 
ters; it may or may not print its mes¬ 
sage/ but it certainly will not fail and, 
hence, will not cause backtracking in 
the procedure that invoked it. More¬ 
over, because of the cut, f is determinis¬ 
tic (provided its parameters are already 
instantiated). The cut prevents the sec¬ 
ond clause from being used to generate 
a second solution with parameters that 
have succeeded with the first clause. 

Similarly, a procedure can be guar¬ 
anteed to fail by adding cut and fail at 
the end of each of its definitions: 

g(X,Y)p:- X<Y, write(‘X less than Y),!, fail. 
g(X,Y) Y<X, write( Y less than X’), !, fail. 

Any call to g ultimately fails for one of 
two reasons: either it does not match 
any of the clauses present, or it matches 
one of the clauses and ends with cut 
and fail. The cut is written next to last 
so that it will not be executed unless all 
the other steps of the clause have suc¬ 
ceeded first; as a result, it is still pos¬ 
sible to backtrack from one clause of g 
to the other as long as the cut has not 
yet been reached. 

In Prolog implementations that al¬ 
low goals to be treated as data (and this 
does not include Turbo), the proce¬ 
dures make_succeed and make_fail, 
which make any goal succeed or fail, 
can be defined as: 

make_succeed(Goal) :- call (Goal),!. 
make_succeed (_). 

make_fail(Goal) call(Goal),!, fail. 

\ 

In some implementations, call(Goal) is 
written simply as Goal. 

Likewise, the procedure once can 
be defined so that it allows a goal to 
succeed exactly once, thus making any 
goal a deterministic one: 


160 


PC TECH JOURNAL 






once(Goal) call(Goal),!. 

This procedure backtracks as much as 
necessary to get one successful solution 
to Goal, then stops. Thus, no matter 
how many possible solutions f(X) has, 
the goal once(f(X)) returns only the 
first solution. If f(X) has no solutions, 
once(f(X)) fails. 

REPETITIVE COMPUTATION 

Prolog offers two ways to perform com¬ 
putations repetitively: backtracking and 
recursion. Of the two, recursion is far 
more versatile. However, backtracking 
has some interesting uses, such as the 
construction of repeat-fail loops. In Pro¬ 
log implementations that lack tail-recur¬ 
sion optimization, repeat-fail looping is 
the only kind of iteration that can be 
performed ad infinitum without causing 
a stack overflow. 

The predicate repeat is built into 
most Prolog implementations. If not 
built in, it can be defined as follows: 

repeat. 

repeatrepeat. 

(The built-in version should be used if 
available, because in some implementa¬ 
tions, the definition above does not pre¬ 
vent stack overflow.) 

The repeat predicate always suc¬ 
ceeds and has an infinite number of 
solutions. Thus, any procedure call 
bracketed between repeat and fail will 
be tried over and over again, even if it 
generates only one solution. For exam¬ 
ple, the following goal displays an infi¬ 
nite number of asterisks: 

repeat, write(‘*’), fail. 

The following procedure turns the 
computer into a typewriter, accepting 
characters from the keyboard and dis¬ 
playing them ad infinitum, until the the 
Break key is used to abort: 

typewriterrepeat, 
getO(C), 
piit(C), 
foil. 

The loop can be made to terminate by 
allowing it to succeed eventually, so 
that backtracking stops. The following 
version of typewriter stops when a line 
terminator (ASCII code 10) is typed: 

typewriterrepeat, 
getO(C), 

Put(C), 

C = 10. 

If C is equal to 10, execution termi¬ 
nates; otherwise, execution backtracks 
to repeat and proceeds forward again 
through getO(C) and put(C). 

MARCH 1987 


The looping in the latter version of 
typewriter can be restarted by the fail¬ 
ure of a subsequent goal (as in the 
compound goal typewriter, foil). To 
prevent the loop from restarting, a cut 
needs to be added as follows: 

typewriter repeat, 
getO(C), 
put(C), 

C = 10, 

i. 

In effect, this forbids looking for alter¬ 
native solutions to typewriter once one 
solution has succeeded. 

A crucial difference does exist be¬ 
tween repeat-foil loops in Prolog and 
repeat-until loops in Pascal. In Pascal, 
iteration is accomplished by first exe¬ 
cuting all the statements in the loop, 
then jumping from the end back to the 
beginning. In Prolog, however, back¬ 
tracking may cause control to jump 
backward from any goal to any earlier 
goal that has alternative solutions. (The 
limiting case is repeat, which does 
have alternative solutions.) If any goal 
in a Prolog loop fails, subsequent goals 
are not attempted. 

A serious limitation of repeat-foil 
loops is that information cannot be con¬ 
veniently passed from one iteration to 
the next. Prolog variables lose their val¬ 


ues upon backtracking. Thus, there is 
no easy way to make a repeat-foil loop 
accumulate a count or total. (Informa¬ 
tion can be preserved by storing it in 
the knowledge base by using assert and 
retract, but this process is usually slow 
and awkward.) With recursion, informa¬ 
tion can be transmitted from one pass 
to the next through the parameter list. 
This is the main reason for preferring 
recursion as a looping mechanism. 

RECURSION 

Recursion is a familiar means of imple¬ 
menting task-within-a-task algorithms, 
such as tree searching and Quicksort. 
Prolog lends itself well to expressing 
recursive algorithms developed in LISP. 
However, any iterative algorithm can be 
expressed recursively. 

Here is the classic recursive algo¬ 
rithm for computing factorials, as ex¬ 
pressed in Pascal 

function factorial (N:integer):integer; 
begin 

if N = 0 then 
factorial: = 1 
else 

factorial: = N *foctorial (N-1); 

end; 

and as expressed in Prolog (change is 
to = in Turbo Prolog) 


Personalize 
your computing 
environment. 

The MKS Toolkit now contains 
the Korn shell command interpreter. 


The MKS version of Bell Labs' Korn shell has this and more: 


► the full power of the UNIX System V.2 
Bourne shell 

• the most requested features of 
Berkeley's C shell 

»the full-UNIX utility of executable shell 
files 


* command aliases 

> interactive command-line facilities 

> previous command history and editing 

> a powerful programming language 

> shell variable expansion 

> arithmetic evaluation 


All this has been fine-tuned to create the optimum environment under DOS. The Korn 
shell is just one of over 100 commands — fully compatible with UNIX System V.2 — 
now contained in the MKS Toolkit, including the following: 


awk 

cat 

chmod 

cmp 

cp 

cpio 

ctags 

cut 

date 

dd 

df 

diff 

du 

echo 

ed 

egrep 

ex 

fgrep 

file 

find 

head 

help 

join 

lc 

Is 

more 

mv 

nm 

od 

paste 

Pg 

prof 

rm 

sed 

size 

sort 

split 

strings 

tail 

time 

touch 

tr 

uniq 

vi 

wc 


and much, much more 
These programs run from the shell or command.com under DOS on machines such as 
the IBM PC, XT, and AT, the AT&T 6300, and most PC compatibles. Full documentation 
is included. Phone support is available 9-6 EST. Not copy protected. 


Everything for only $139. 


Mortice Kern Systems Inc. 

43 Bridgeport Road East, Waterloo, Ontario, Canada N2J 2J4 
For information or ordering call collect: (519) 884-2251 

Prices quoted in U.S. funds. MasterCard and VISA orders accepted. OEM and dealer inquiries 
invited. UNIX is a trademark of Bell Labs. MS-DOS is a trademark of Microsoft Corp. 


CIRCLE NO. 174 ON READER SERVICE CARD 


161 




HIGH POWER 
WITHOUT THE 
HIGH PRICE 


Microstat® has been the most popular statistics package for microcomputers since we in¬ 
troduced it in 1978. In the past two years, Microstat has been requested by name on more 
military contracts than any other statistics package. When it comes to coverage, ease of 
use, accuracy, and value, Microstat is unbeatable. Just some of it features include: 


Data Management Subsystem for file creation and 
management. 

Data Transformations 
Hypothesis Testing 
Three types of ANOVA 

Simple, Multiple, Stepwise Multiple Regression 
11 Nonparametric Tests 
Factorials, Permutations, Combinations 
Batch or Interactive Operation 


Read external files (e,g., Lotus, 
dBasell, ASCII) 

Descriptive Statistics 
Scatterplots 
Correlation Analysis 
Time Series 

8 Probability Distributions 
Crosstabs and Chi-Square 
User’s Manual 


Microstat® is 
available for MSDOS, 
PCDOS, CP/M80, 
CP/M86. The price is 
$375.00. Multiple copy 
discounts and cost- 
effective site licenses 
are available. 

To order, call: 

800-952-0472 

(for orders) 
or 

317-255-6476 

(tech, info.) 


MioWaald 


Software Report Card 


Infoworld, March 16,1981. 

Ecosoft Inc. 

6413 N. College Ave. 
Indianapolis, IN 46220 


Functionally 
Documentation 
Ease of Use 
Error Handling 
Support 


CIRCLE NO. 131 ON READER SERVICE CARD 

Personal REXX 

for the IBM PC 


★ Interpreter for the full REXX language, including all of the standard REXX 
instructions, operators, and built-in functions 

★ Sophisticated string manipulation capabilities 

★ Unlimited precision arithmetic 

★ Direct execution of DOS commands from REXX programs 

★ Built-in functions for DOS file I/O, directory access, screen and keyboard 
communication, and many other PC services 

★ Compatible with VM/CMS version of REXX 

★ Uses include: 

— Command programming language for DOS 

— Macro language for the KEDIT text editor 

— Can be interfaced by application developers with other DOS 
applications, written in almost any language 


Mansfield Software Group, Inc. 
P. O. Box 532 
Storrs, CT 06268 
(203) 429-8402 


$125 plus $3 shipping 

MC, VISA, AMEX, COD, PO, CHECK 


PROGRAMMING PRACTICES 


factorial (0,1). 

factorial(N,FactN) :- N > 0, 

M is N-l, 

factorial (M,FactM ), 
FactN is N*FactM. 

This is straightforward; the procedure 
factorial calls itself to compute the fac¬ 
torial of the next smaller integer, then 
uses the result to compute the factorial 
of the integer in question. 

Now consider an iterative algo¬ 
rithm to perform the same task: 

function factorial(N:integer):integer; 

var IJdnteger; 

begin 

I: = 0; 

J:=l; 

while I<N do 
begin 
I: = I+1; 

J:=J*I 

end; 

factorial: = J 
end; 

In Pascal, this procedure does not call 
itself. Its Prolog counterpart, however, 
is a procedure that calls itself as its very 
last step—a procedure that is said to be 
tail recursive : 

factorial(N,FactN) fact_iter(N,FactN,0,1). 
fact_iter(N,FactN,N,FactN). 
fact_iter (N,FactN,I, J ) 

I<N, 

Newl is 1+1, 

NewJ is J*NewI, 
fact_iter(N,FactN,NewI,NewJ ). 

Here the third and fourth parameters of 
fact_iter are state variables that pass 
values from one iteration to the next. 
State variables in Prolog correspond to 
variables that change their values re¬ 
peatedly in Pascal. 

The recursive clause of fact__iter 
checks that I is still less than N, com¬ 
putes new values for I and J, and finally 
calls itself with the new parameters. The 
recursive call is the very last step in this 
clause; this whole clause is placed last 
so that when it calls itself, no untried 
alternatives will be left to save on the 
stack. This ensures that the stack will 
not grow during the iteration. 

In Prolog (as in arithmetic, but not 
! as in most programming languages), the 
statement X is X+1 is always false. Be¬ 
cause Prolog variables cannot change 
their values, the additional variables 
Newl and NewJ have to be introduced. 
Newl and NewJ contain the values that 
will replace I and J in the next iteration. 

The first clause of fact_iter serves 
to end the iteration when the state vari- 


CIRCLE NO. 263 ON READER SERVICE CARD 


162 


PC TECH JOURNAL 




ables reach their final values. A more 
Pascal-like, but less efficient, way of 
writing this clause would be: 

fact_iter (N,FactN,I, J) 1 = N, FactN = J. 

That is, if I is equal to N, then FactN 
(which has been uninstantiated until 
now) should be given the value of J. By 
writing this same clause more concisely 
in the earlier procedure, Prolog’s unifi¬ 
cation mechanism is made to perform 
work that would require explicit com¬ 
putational steps in other programming 
languages. 

Most iterative algorithms can be 
expressed in Prolog by following the 
pattern below: 

• First, other types of loops (for exam¬ 
ple, for and repeat-until) are trans¬ 
formed into Pascal-like while loops. 

• Then the computation is broken into 
three stages: the initialization, the 
loop itself, and any final computations 
needed to return a result. 

• The loop as a tail-recursive clause 
(for example, the second clause of 
fact_iter ) is expressed with the 
while condition at the beginning. 

• The final computations is placed in 
another nonrecursive clause of the 
same procedure, which is set up so 
that the nonrecursive clause executes 
only after the loop is finished. 

• Finally, the entire algorithm is hidden 
behind a “front-end” procedure 
(factorial in the above example), 
which is what the rest of the program 
actually calls. 

The front-end procedure not only 
passes along its parameters into the tail- 
recursive procedure, but the initial val¬ 
ues of the state variables as well. The 
fine art of expressing iteration through 
tail recursion in Scheme (a LISP dialect) 
is discussed extensively in Structure 
and Interpretation of Computer Pro¬ 
grams , by Harold Abelson and Gerald 
Jay Sussman (MIT Press, 1985). 

Whenever one Prolog procedure 
calls another, one or more pointers are 
saved on a pushdown stack. These 
pointers indicate what remains to be 
done after return (the continuation of 
the calling procedure) and what alterna¬ 
tive solutions remain to be tried (the 
alternative set). 

Because every single procedure 
call places information onto the stack, 
recursion would appear to lead inevita¬ 
bly to stack overflow. However, several 
Prolog implementations, including Arity 
and Turbo, recognize a special case: if 
both the continuation and the alterna¬ 
tive list are empty, nothing need be 
placed on the stack at all. In this cir¬ 


cumstance, instead of calling the next 
procedure in the normal way, the com¬ 
puter can simply jump into the next 
procedure without saving a record of 
where to return. If the procedure is 
calling itself, this effectively transforms 
recursion into iteration. 

As was stated earlier, a procedure 
that calls itself with an empty continua¬ 
tion and empty alternative set is de¬ 
scribed as tail recursive ; the process of 
executing such a call without adding 
any items to the stack is called tail-re¬ 
cursion optimization or tail-recursion 
elimination. (The “elimination” of tail 
recursion does not mean that it should 
be banished from the program entirely. 
On the contrary, tail recursion should 
be used liberally because the imple¬ 
mentation transforms it into an efficient, 
iterative process.) 

A quick way to verify that a particu¬ 
lar Prolog implementation performs 
tail-recursion optimization is to try the 
following predicate: 

test(N) write(N), nl, M is N+1, test(M). 

Start with the goal test(l) and see how 
long execution continues. If the pro¬ 
gram runs for more than 10,000 itera¬ 
tions, it is a safe bet that tail-recursion 
elimination is taking place. 


CONTROLLING STACK GROWTH 

Recognizing a recursive call that has an 
empty continuation is easy: the recur¬ 
sive call is the very last subgoal in the 
clause that contains it. Determining 
whether the alternative set is also empty 
takes more thought. 

One way to get an empty alterna¬ 
tive set is to put the recursive call in 
the last clause of a predicate. By doing 
this, the recursive call takes place only 
after the other alternatives have been 
exhausted. An example is the longer 
iterative factorial program that was 
given earlier. The recursive call takes 
place only when all other alternatives 
have been exhausted. 

In the third clause of the iterative 
factorial program, fact_iter calls only 
deterministic predicates ( < and is ) 
before calling itself recursively. In fact, 
if this clause had contained any calls to 
nondeterministic predicates, the alterna¬ 
tive set would not have been empty at 
the time of the recursive call because 
this same recursive call possibly could 
have been reached by a different, as yet 
untried, path. 

The alternative set can also be 
made empty by using the cut operation 
to rule out alternatives, as in the follow¬ 
ing replacement for fact__iter: 


% 

ELP 


is at 

HELP/Control™ - an on-line help subsystem for the IBM-PC. I 
Increases the value of your software. Save development time and money. 

HELP/Runtime. A few simple subroutine calls add context sensitive on-line help to your 
application. HELP/Runtime includes tested interfaces for Microsoft C, LatticeC, Turbo Pascal, 
IBM BASIC (Interpreter and Compiler), Microsoft FORTRAN, IBM COBOL and assembler. It is 
distributed with demonstration programs in each language. 

HELP/Popup. Add a powerful help system to existing applications, even in dBase or 123, 
without reprogramming, even without a programmer. It may be memory resident, or, installed 
with an application, it terminates when the application exits, releasing its memory. 

HELP/Generation. Use your favorite editor and our concise screen definition language to build 
your help files. Compile them into a help system usable by either HELP/Runtime or 
HELP/Popup. The package includes sources for sample help files illustrating such features as 
full-sized or windowed screens. 

HELP/Convenience. The screens include highlighted captions. The user selects a caption with 
the cursor control keys and advances to a new screen, just as with 123. 

HELP/Documentation. A detailed manual, both on-line and printed, for the documentation 
writer and programmer includes instructions which may be incorporated into the user manual. 

HELP/Environment. PC-DOS 2.0 or greater is required. HELP/Runtime requires 
approximately 9K for code and buffers for full size help screens. 

HELP/Pricing. The complete package (software, both manuals, and demo programs) costs 
$125.00 and includes a royalty-free license to add HELP/Runtime to your applications and to 
make 25 copies of HELP/Popup. A demonstration diskette, including the on-line manual, costs 
$15.00. A free update to Release 1.1 is available to registered owners. To order, or for more 
information (including dealer, multiple-copy and site-license pricing) call MDS at 207/772- 
5436. We accept MasterCard and VISA. 

MOS. INC., P.O. BOX 1237, PORTLAND. MAINE 04104 





hand 


MARCH 1987 


CIRCLE NO. 146 ON READER SERVICE CARD 


163 



PROGRAMMING PRACTICES 


Storage Dimension's 

SpeedStor 286 BIOS 

from Award Software 

for use with PC ATs and 

XENIX System V , 

Novell Advanced 
Netware 



■ Overcome drive table limitations 

■ Includes low-level initialization 
and disk drive advanced 
diagnostics 

■ 30% faster than IBM's BIOS 

■ $129- Retail. Dealer and 
distributor pricing available 

STORAGE 

DIMENSIONS 


Supports Seagate ST4096, Miniscribe 

6085 and the following: 

Seagate 

ST251, ST4051, ST4096 

Maxtor 

XTJ085, XT1105, XT1140, 

XT2085, XT2140, XT2190 

Miniscribe 

6074, 6085 

Micropolis 

1325 

Control Data 

Wren II 94155-86 

Microscience 

HH1050 

Newbury 

NDR1085, NDR1140, NDR2190, 

Priam Vertex 

V150, V170, V185, 519 

Toshiba 

MK54F, MK56F 


The Experts in High Capacity PC Storage 


408 - 395-2688 

981 University Ave. 
Los Gatos, CA 95030 


Storage Dimension's family of high performance products for PC storage. 

■ SpeedStor subsystems from 42MB to 640MB ■ SpeedCache caching software 

■ SpeedStor hard disk integration software ■ Extended drive table ROMs 

■ 60MB tape backup (DOS, Xenix, Novell) ■ SpeedStor 286 BIOS 


CIRCLE NO. 176 ON READER SERVICE CARD 


Attention Realia COBOL Users: 

SCREENIO 2.0 

Screen Manager for COBOL Professionals. 

A strictly COBOL approach to screen management, written by and for COBOL 
professionals. Screen Design is easy with SCREENIO. You take care of your 
application. We take care of the screens! Fully compatible with Realia COBOL. 

What does it do? 

Interactive Screen Design, Full Feature Screen Painter, COBOL Data Field 
Specifications, Edit Masks, Automatic Error Detection, Data Validation, High 
Speed Video, Full Compatibility, Window Panels , Hot-Fields, Key Redefinition, 
Foreign Language Capability, Full Color Support, Cursor Management, PC Speaker 
Control, Screen Libraries, and Very User Friendly. We’ve thought of everything! 

And Best of all: 

No Facility, No Runtime Fees, Superb Support. Only $400 Plus Shipping. 

Ask about our FREE demo pack and SCREENIO+Realia Package Deal! 

NORCOM 

Northern Computing Consultants 

Post Office Box 020897 
Juneau, AK 99802-0897 
(907) 780-6464 

Telex: 5106014951 (NORCOM) 

- Amex MC Visa Check - 


CIRCLE NO. 191 ON READER SERVICE CARD 


fact_iter(N,FactN,I, J) 

I < N, 

Newlisl+l, 

NewJ is J*NewI, 

i 

fact_iter(N,FactN,NewI,NewJ ). 

fact_iter(N,FactN,N,FactN). 

Here the recursive call occurs in the 
first clause, but the cut guarantees that 
the second clause need not be consid¬ 
ered as an alternative. Moreover, it does 
not matter whether the predicates that 
were called before the cut are deter¬ 
ministic or not; the cut rules out any 
backtracking through them. 

This technique should be used 
with caution: it works in some Prolog 
implementations, including Turbo, but 
not all. In Arity Prolog 4.0, it appears to 
work in compiled programs, but, curi¬ 
ously, not in interpreted ones. 

Finally, some Prolog packages 
empty the alternative set under certain 
conditions by looking ahead to other 
clauses. For example, the following pro¬ 
gram is tail-recursive in interpreted 
Arity Prolog even though it does not 
appear to be: 

test(X) write (X), nl, 

NewXisX+1, 

test(NewX). 

test(0). 

When X is nonzero, the interpreter 
looks at the heads of both clauses be¬ 
fore trying either. It sees that the sec¬ 
ond clause cannot work with nonzero 
X, so it enters the first clause with the 
alternative set empty. This mechanism, 
called indexing , is seldom well docu¬ 
mented and should be tested tho¬ 
roughly before it is relied upon. 

REFERENCES 

Abelson, Harold, and Gerald Jay Suss- 
man. Structure and Interpretation of 
Computer Programs. Cambridge, 
Massachusetts: MIT Press, 1985- 
Clocksin, W. F., and C. S. Mellish Pro¬ 
gramming in Prolog. Second edition 
Berlin: Springer-Verlag, 1984. 
Kluzniak, Feliks, and Stanislaw Szpako- 
wicz. Prolog for Programmers. Lon¬ 
don: Academic Press, 1985- 
Sterling, Leon, and Ehud Shapiro. The 
Art of Prolog. Cambridge, Massachu¬ 
setts: MIT Press, 1986. 


Michael Covington is performing research in 
automated reasoning and natural language 
understanding at the University of Georgia. 


164 


PC TECH JOURNAL 



Announcing 
AST Premium/286, 





Discover AST Prernium/286. The First 
AST Quality Uncompromising AT C 



More than two million people have made 
us the first choice in PC Enhancement 

For over five years, you've known AST as 
the leading PC enhancement company 
Now, we're introducing the ultimate 
enhancement: AST Premium/286. The 
first AT-compatible personal computer 
with AST performance and reliability More 
flexible and upgradeable. Skillfully com¬ 
bining lightning fast processing speed and 
uncompromising compatibility. 

AST FASTslots:™ Processing speed¬ 
ways. Forming the foundation of the 
AST Premium/286's increased speed are 
our FASTslots. This advanced architec¬ 
ture improves overall performance so there's 
enough built-in power to satisfy even 
the most demanding user. 

The AST Premium/286 operates 60% 
faster than an 8MHz PC AT® as mea¬ 
sured by the Norton Utilities™ Version 3.0 
Syslnfo. And maintains full compatibility 
with standard PC and AT-based enhance¬ 
ment cards. It also provides for a power¬ 
ful, easily upgradeable and expandable 
future, accommodating the next generation 
of accelerator and high-performance 
enhancement cards. 


Prices Start 
At $1995.00* 


A Heritage Of Software Compatibil¬ 
ity. Software compatibility has always 
been one of our strong points. Shipped 
with the industry-standard MS-DOS® 

3.1, AST Premium/286 is compatible with 
widely accepted operating systems such 
as IBM® PC-DOS™ Concurrent DOS™ and 
XENIX™ It's also designed to get the most 
out of multitasking software packages like 
Microsoft® Windows, DESQview™and 
TopView™ 

Applications-oriented. Keyboard- 
selectable operation at 10,8 or 6MHz means 
virtually all popular off-the-shelf IBM 
PC and PC AT application software is 
immediately compatible. All your favorites, 
including Microsoft Word, Lotus® 1-2-3,® 
Framework™ Symphony,® dBASE® III and 
AutoCAD™ 


Attain your fullest software poten¬ 
tial. AST's advanced architecture also 
provides faster and more flexible mem¬ 
ory addressing. While built-in Enhanced 
expanded memory capabilities—AST 
FASTRAM,™ expandable to 2MB in a single 
slot—let you break the 640K DOS bar¬ 
rier. Create bigger spreadsheets and sort 
larger databases. And enjoy the uninter¬ 
rupted workflow benefits of multitasking 
using current DOS versions, with full sup¬ 
port for protected mode software built-in. 

Fast access disk storage. Comple¬ 
menting AST Premium/286's speedy opera¬ 
tion is a full line of disk systems. There's 
a 20MB, 40MB and a 70MB hard disk. Both 
the 40MB and the 70MB offer more storage 
and faster access times—below 30msec - 
than the PC AT's fixed disk. And our 
external disk /tape systems, featuring 
advanced SCSI architecture, allow easy 
expandability. 




Personal Computer With Legendary 
□mpatibilily and Lightning Speed. 


More standards are standard. We 

build-in our AST FASTRAM™ memory card. 
And most models include our own multi- 
mode enhanced graphics adapter, suppor¬ 
ting IBM EGA, CGA and Monochrome, and 
Hercules Graphics Card™ display modes. 

Compatible with AST and IBM 
Products. AST Premium/286 is designed 
to remain your productivity partner for 
years to come. Choose it with confidence 
for single and multitasking applications, 
individual and shared environments alike. 
Use it as an engine with other AST prod¬ 
ucts to form powerful application work¬ 
stations for desktop publishing, CAD/CAE 
and more. Or to increase connectivity use 
it as a network file server, to communicate 
with IBM mainframes and minicomputers, 
or to manage multiuser environments. 

Solutions that are ready to go. 

We also offer a number of pre-configured 
workstation solutions tailored for maxi¬ 


mum performance in your application. 
Combining our proven products, from 
local area networking and data commu¬ 
nications to extra memory and I/O to 
laser printers and disk systems, our solu¬ 
tions are all designed to increase your 
business productivity. 

Quality across the board, around 
the world. When you buy AST products, 
you're also purchasing a worldwide repu¬ 
tation for service, support and product 
dependability. AST Premium/286 is backed 
by a one year limited warranty, and our 
worldwide network of certified dealers and 
service centers. 

AST Premium/286—The system 
and the solutions. For more information 
call our Product Information Center at 
(714) 863-0181 or send the coupon to: 

AST Research, Inc., 2121 Alton Avenue, 
Irvine, CA 92714-4992. 


Yes, I want to know more about AST 
Premium/286 Solutions. Send me more 
information today. 


Name:. 

Title:— 


Company:. 

Address:— 


City: 


.State:. 


Zip:_Telephone: J_1_ 

My applications: 

-Desktop Publishing_Multiuser 

_Mainframe/Minicomputer Connection 

_Multitasking_General Business 


Send to: 

AST Research, Inc., 2121 Alton Avenue, 

Irvine, CA 92714-4992 Attn: M.C.- PCTJ3/87 

OIPCTHOOOBOIPM 



> 







Seven industry-standard 
expansion slots; 1 PC- 
compatible slot, 6 PC AT- 
compatible slots, including 
two AST FASTslots. FASTslots 
provide no wait state oper¬ 
ation with a high-speed 
direct interface to the 10MHz 
80286 processor. Advanced 
architecture accommo¬ 
dates the next generation 
of accelerator and high- 
performance enhancement 
cards. It's also an open archi¬ 
tecture for easy develop¬ 
ment and system integration. 




; 

J L 


Two AT-compatible expansion slots 
with a plus: a third bus connector fea¬ 
turing lightning-quick CPU access 
time, for use with specially-designed 
cards like the AST FASTRAM Enhanced 
memory card. Expandable to 2MB in 
single slot, FASTRAM supports a variety 
of addressing capabilities-Enhanced 
EMS, EMS, extended (protected mode) 
and conventional memory addressing. 

Enhanced, low-profile 101/102-key key¬ 
board with separate numeric keypad, 
dedicated cursor control and extra 
function keys. International versions 
available. 


AST Premium/286 is shipped with MS- 
DOS and GW BASIC,® and it's fully 
compatible with a wide variety of oper¬ 
ating systems, operating environment 
and utility packages, and application 
software. 


Indicators let you check your clock 
speed-user-selectable at 10, 8 or 
6MHz. Reset button allows easy cold¬ 
booting. Security lock prevents unau¬ 
thorized keyboard access. 


"The Perfect 10" 


10MHz, 0 wait-state operation, 
faster than the 8MHz PC AT, with 
IBM PC AT hardware and software 
compatibility. 


Supports standard PC, PC AT and 
AST FASTslot cards. With AST, you 
start with a lot, like our included 
FASTRAM Enhanced memory card 
and multimode Enhanced Graphics 
Adapter, but you've also got a lot 
of options. We offer the widest range 
of compatible enhancement prod¬ 
ucts and peripherals to suit your 
needs-a true one-stop solution 
allowingyou to expand and upgrade 
your system with the assurance of 
future service and support. 


Compare the increased speed of the AST 
Premium/286 agfiinst the top competi¬ 
torsfor yourself. (Basis: Norton Utilities 
Syslnfo Version 3.0) 


AST markets products worldwlde-in Europe call: 44 1 568 4350; in the Far East call: 852 0499 9113; in Canada call: (416) 826-7514. 

AST Premium/286, FASTslot and FASTRAM trademarks of AST Research, Inc. IBM, Personal Computer AT and PC AT registered trademarks and PC-DOS and TopView trademarks of International Business Machines Corporation. Lotus, 1-2-3 and Symphony 
registered trademarks of Louis Development Corporation. dBASE registered and Framework trademark of Ashton-Tate. AutoCAD trademark of AUTODESK, Inc. Microsoft, MS-DOS, XENIX, and GW BASIC registered trademarks of Microsoft Corporation. 
DESQview trademark of Quarterdeck Office Systems. Hercules Graphics Card trademark of Hercules Computer "technology. Norton Utilities trademark of Peter Norton Computing, Inc.UNIX trademark of AT&T Bell Laboratories, Concurrent DOS trademark 
Digital Research. Copyright © 1986 AST Research, Inc. All rights reserved. 


Based on industry-standard native 
80286 technology, complemented by 
AST advanced architecture. 


Coprocessor socket 
accepts 8MHz 
80287 devices to 
execute math- and 
floating point-intensive 
programsfaster. 


CIRCLE NO. 126 ON READER SERVICE CARD 























































Ana V Curve Fitting-' B Much More dL 

^JS^KSSSS- 


B $ss§t 

^R P rfNGAT$3595 


IBM is a 
registered trademark of 
International Business Machines Corp; 

Apple is a registered 
trademark of Apple Computer, Inc. 


APPLE 64 PAGES 264 PRODUCTS 


IBM 48 PAGES 94 PRODUCTS 


INTERACTIVE MICROWARE, INC. 

POB 139, Dept. 237, State College, PA 16804 
Phone: (814) 238-8294 • Telex 705250 


Serial Card 

EXTENDS SPEED 
AND FLEXIBILITY 
OF PC APPLICATIONS 


New improved 8-channel ACL™ serial card now offers the 
option of RS422 and RS485 compatibility. 

The new card provides all the standard ACL “smart 
card” features... flexible address decoding, program¬ 
mable interrupts, expandable options via software, and 
the ability to download custom programs... now the 
ability to operate over greater distances and 
speeds of RS422 applications. In addition, 
the new card enables PCs to interface 
with industrial process controls , 
via RS485 links. 

Call for free literature that 
explains how the improved^ 

ACL Serial Card can t 
expand your PC’s 
multiuser 


0 l ° 


~ofiV 


1 r/‘TH 

jfu] 

rTei 

I M 

lIKll 


11 * J T 

11 • j i j 

Hsj %Mkht 


For information interchange, backup and archival storage, 
IBEX offers a 9-track, IBM format-compatible V 2 " magnetic 
tape subsystem for the IBM PC, featuring: 

■ IBM format 1600/3200 and 800 cpi. 

■ Software for PC-DOS, MS-DOS. 

■ Also for DEC, VAX, VME, 

S-100, RS-232, IEEE 488. 


Write, phone or TWX for information. 


IBEX COMPUTER CORR 

20741 Marilla St. 

Chatsworth, CA 91311 
(818) 709-8100 
TWX: 910-493-2071 


CIRCLE NO. 177 ON READER SERVICE CARD 


”£°. D . u f: ADPleP£ 


jJ^^^^^fi!!!jRtog C raP h V;. Br °?^ectr^ 


CIRCLE NO. 149 ON READER SERVICE CARD 


QuickBASIC just got quicker with 

1== QuickPak 

QuickPak is a superb collection of enhancements, subroutines, and 
instructional material designed to help you get the most out of pro¬ 
gramming in BASIC. 

■ Powerful assembly language routines to give your programs more 
speed, more power, and full access to DOS and BIOS services. 

SORT all or part of a string array with one command! Complete 
windowing capability — display help screens instantly, overlay 
text. FIND any string or sub-string within an entire array regard¬ 
less of capitalization — accepts wildcards. READ directories into 
your programs from any drive or 
path. READ/WRITE disk sectors 
— create your own DOS utilities! : ' T1 

MANY, many more programs j \ 

■ Professionally written QuickBASIC i** 

routines and functions. I 

Powerful input routines for text, 
dates, and numbers. Menus, \ / 

scroll bars, date/time functions, 1 jgg§v __ 

and much more. \ jjKKF 

■ The Assembly Tutor — a complete _ 

guide to learning assembly language 

from a BASIC perspective. Learn how to 
create your own routines and extensions. 

■ Tips and Tricks book — packed with . 

clever ideas and techniques to help 

you be a better programmer. 

You get all this, all of the source code A 

for every program included , and a 
thirty-day money back guarantee for ' 

only S69.00. \ 

No royalties are required for using any \ 

of the QuickPak routines in your pro¬ 
grams. Not copy protected, of course. 


MdckPak 


U CRESCENT SOFTWARE 

64 Fort Point Street, East Norwalk, CT 06855 
(203) 846-2500 

QuickPak requires Microsoft QuickBASIC or BASCOM, DOS 2.0 or higher. Visa, M/C, C.O.D., or checks accepted. 


168 


CIRCLE NO. 208 FOR APPLE, 209 FOR IBM 


CIRCLE NO. 145 ON READER SERVICE CARD 









PRODUCT WATCH 


Reviews 

and 

Updates 


i 

REPERTOIRE 

-ps- 

: 

J 

PMI 

__|§L 


FILEMAX 

1 


Grand Max Software 

• 

— — 

Corporation 

-4- PH- 


MACE UTILITIES 

Paul Mace Software 

BASTOC 

JMI Software Consul¬ 
tants, Inc. 


REPERTOIRE, version 1.3 

PM 

4536 S.E. 50th 
Portland , OR 97206 
5031777-8844 

PRICE: $89 



CIRCLE 351 ON READER SERVICE CARD 


M odula-2 systems have not engen¬ 
dered the same toolbox generation 
that pervades the C and Turbo Pascal 
markets. Typically, most Modula-2 com¬ 
pilers come with a set of skeletal librar¬ 
ies. Users then create their own sets of 
higher level routines for screen man¬ 
agement, extended I/O services, and 
graphics. To fill part of that need, PMI 
has introduced repertoire, a collection 
of high level tools for Modula-2 pro¬ 
grammers. This package contains a 
screen management package with natu¬ 
ral language analysis facilities, a screen 
editor, and a window oriented editor. 
Indexed file I/O and low-level services 
complement the package. 

repertoire is designed to support 
two Modula-2 compilers—Interface 
Technologies Corporation’s M2SDS and 
Logitech, Inc.’s Modula-2. (For a review 
of these products, see ’’Modular Devel¬ 
opment,” John T. Cockerham, this issue, 
p. 114.) PMI delivers the routines on 


two diskettes or as a set of four for 
both compilers for an additional $20. 
The installation routines are well docu¬ 
mented in the manual. 

The repertoire manual is very com¬ 
plete and includes a comprehensive in¬ 
dex. The writing is exceptionally clear. 
The copy, however, is less clear. The 
type is blurred and microscopic. 

In a radical departure from most 
software companies, PMI also includes 
the Modula-2 source code in the base 
price. The author’s stated purpose is to 
allow the user to support some of the 
code and reserve the difficult bugs for 
company support. 

The use of the screen system starts 
by creating the screen template with a 
basic text editor. This template is a se¬ 
ries of lines that indicate to the screen 
manager the screen number, data fields, 
colors, acceptable user responses, and 
the next screen in sequence. The speci¬ 
fications are fed to the screen compiler 
(its source code is included with the 
package) that creates a .DSP file. The 
programmer calls up a screen by calling 
the screen manager and specifying the 
.DSP file and the screen number. The 
screen manager interprets the contents 
of the .DSP file. Included with the 
screen manager is a simple,, screen- 
oriented text editor that allows a uni¬ 
form user interface for text entry. 

The natural language facilities are 
actually a pattern expression evaluator. 
The pattern can include Boolean opera¬ 
tions on the presence or absence of a 
string from the test string, the length of 
the test string, and the relative positions 
of words within the test string. The rou¬ 
tine returns an index into the pattern 
string where the match occurred. For 
example, pattern string 

‘chicken’ & ‘pot’ \ ‘garage’ & ‘car’ 

defines two patterns. The first searches 
for chicken and pot in a string; the sec¬ 
ond searches garage and car . The ex¬ 
pression evaluator returns 0 for no 


match, 1 for a match of the first pattern, 
and 2 for the second. For example: 

A chicken in every> pot returns 1. 

Two cars in every garage returns 2. 
Chicken potato pie returns 1. 

A chicken in every car returns 0. 

An option is provided to match 
only whole words, and the word-delim¬ 
iting characters may be specified by the 
user. With appropriate user-written pat¬ 
terns, the string expression evaluator 
can be used to create a simple natural- 
language command interface. 

PMI has written these routines to 
accommodate a multitasking environ¬ 
ment. The windowing and screen- 
oriented text editor can be invoked by 
several user-written Modula-2 processes 
simultaneously; several editing windows 
can be open. Text exchange can be per¬ 
formed between the windows. 

With version 1.3 of repertoire, PMI 
introduced an indexed file system. This 
system allows variable-length records 
and is quite fast. The file manager 
keeps the linked-list file index in RAM 
at all times, searching through RAM for 
the desired record. The index is up¬ 
dated only when the file is closed. An 
optional programmed mode saves the 
index with every update to the file. If 
the index is totally lost, a recovery 
mechanism automatically runs when the 
file is reopened, regenerating the index. 

To overcome the differences be¬ 
tween the two Modula-2 systems’ 
implementations of low-level language 
facilities, PMI includes its own low-level 
routines. These routines fill in where 
the two implementations fall short. For 
the Logitech system, the routines pro¬ 
vide long cardinal and long integer rou¬ 
tines. For the Interface Technologies’ 
system, the routines provide alternative 
implementations of the string functions. 

The screen system is for text only. 
The text editor uses the F10 key to sig¬ 
nal the end of data entry rather than the 
Enter key. Using the source code, this is 
a trivial change to make. 


MARCH 1987 


169 





Get a Grip 
on Assembly 
Language. 


The award winning 
Visible Computer: 



The Visible Computer is a book and 
software combination for mastering 
the elusive skills of assembly lan¬ 
guage. PC Tech Journal took one look 
and made it their September ’85 
“Program of the Month. ” 

Its an animated simulation of the 
PCs microprocessor that lets you see 
with your own eyes how assembly 
language works. YouTl be using it as 
a debugging tool for years to come. 

Its a tutorial A lot of people think 
the 350 page manual is the best book 
on assembly language ever written. 

It's 45 demonstration programs youTl 
execute with the simulator, from simple 
register loads to advanced programs 
that manipulate interrupts and perform 
file I/O. And what you’ll learn applies to 
all 86 family proces- Cm AP 
sors, including the ^MjW % 

80186 and 80286. not copy protected 

The Visible Computer for IBM PC/XT/AT and true 
compatibles. If your dealer doesn’t have it, order direct: 
Software Masters, 2714 Finfeather, Bryan, TX, 77801. 

(409) 822-9490. Please include $3.00 shipping. 

Bank cards accepted. 



processor as it executes programs. 

Software Masters 


PRODUCT WATCH 


In today’s marketplace, very few 
manufacturers will take the risk of sup¬ 
plying the source code with their prod¬ 
ucts, especially one as well conceived 
and well executed as repertoire. The 
routines offered in this package provide 
a Modula-2 developer with a useful set 
of high-level tools that are not available 
in the base language. They represent an 
outstanding bargain. 

—JOHN T. COCKERHAM 


FILEMAX 

Grand Max Software Corporation 
P.O. Box 10580 
Portland , OR 97210 


503 / 226-0808 
PRICE: $79.95 



W ith the proliferation of hard disks 
comes an increased interest in pro¬ 
grams that organize and manage hard¬ 
disk files and directories, filemax is a 
disk management utility with an impres¬ 
sive set of features, including directory 
tree copying, directory renaming, file 
recovery, and disk optimization. 

Unlike many popular utilities, file- 
max is not a terminate-and-stay-resident 
program; it is intended to be invoked 
periodically, as needed, for directory 
viewing, organization, and clean up. An 
installation utility is provided to allow 
the user to modify program characteris¬ 
tics such as keyboard set-up, sound (on/ 
off), and help file path. The filemax pro¬ 
gram is not copy protected. 

filemax uses full-screen output and 
function-key command driven input. 

The output screen is split into two 
areas: the top 19 lines display outputs 
and the bottom 6 lines display prompts. 
A small menu in the lower left screen 
corner lists valid function keys and 
describes their use. On-line help is al¬ 
ways accessible in filemax with the FI 
key. The help screens provide brief de¬ 
scriptions of options that are available 
at any point in the menu hierarchy. 


filemax’s functions are in three 
categories: directory manipulation, file 
manipulation and display, and manipu¬ 
lation of the file allocation table (FAT). 

Among the directory functions are 
commands to move, rename, create, 
delete, and sort directories. The move 
and delete functions are particularly 
powerful; using them the user can mod¬ 
ify entire directory chains. The move 
directory command allows a directory 
to be inserted before, after, or within, 
that is, as a child subdirectory to any 
other directory. The delete directory 
command requests verification that the 
directory’s files and all of the subdirec¬ 
tories are to be deleted. With the sort 
command directory entries can be 
sorted on any combination of name, ex¬ 
tension, date, time, size, or attributes in 
either ascending or descending order 
by the sort field. 

The supported file manipulation 
functions include copy, move, rename, 
delete, compare, change attributes, 
change date, and undelete. Files that 
originally occupied only one cluster can 
be recovered in one operation with the 
undelete command. For multicluster 
files, undelete allows the user to recon¬ 
struct the deleted file’s cluster chain by 
selectively viewing available clusters 
and including the appropriate ones in 
the chain. Another function, find string 
command, searches for a specified char¬ 
acter string in a file or range of files. 
Like all of the file functions, it allows 
the user to select a range of files upon 
which to operate. 

The FAT analysis portion of filemax 
provides a well-designed display of the 
FAT that shows the chaining of clusters 
in files, open clusters, bad clusters, and 
cross-linked clusters. The contents of 
any cluster can be viewed in either text 
or hexadecimal format. 

An option called “tune up” allows 
the clusters on the disk to be reorgan¬ 
ized in such a manner that all files are 
contiguously allocated on the disk and 
all subdirectories are placed at the 
beginning of the disk. However, the 
tune-up feature of the tested version re¬ 
flects a possibly serious design flaw. As 
clusters are rearranged on the disk, file- 
max keeps track in RAM of the corre¬ 
sponding changes to the FAT chaining 
and directory entries. This information 
is written to disk only at the completion 
of the tune-up operation. Any unex¬ 
pected interruption of the operation, 
for example, from power loss or acci¬ 
dental rebooting can result in signifi¬ 
cant damage to the file structure of the 
disk, perhaps rendering it unreadable. 


CIRCLE NO. 168 ON READER SERVICE CARD 

170 


PC TECH JOURNAL 







filemax 3.42 contains another 
annoying bug that shows up when drive 
B: is referenced on a single-diskette- 
drive system. The program produces an 
error box that contains the message GX 
I/O ERROR and a display of registers, at 
which point the machine has to be 
rebooted. Using the assign command to 
assign B: to A: causes a similar problem. 

filemax has difficulty coexisting 
with some pop-up menu programs and 
device drivers. When Hersey Micro 
Consulting’s fansi-console or the Word¬ 
Perfect Library Calendar was installed 
before filemax was started, the system 
hung when filemax was exited. When 
filemax is running, it directly uses the 
keyboard interrupt and does not pass 
through unrecognized keys (by calling 
the previous keyboard vector address). 

The documentation for filemax con¬ 
sists solely of a 19-page overview of 
program operation. Considering the 
complexity of the program and its capa¬ 
bilities, this is rather sparse information. 
Users familiar with DOS disk and direc¬ 
tory structure, and who have used other 
disk utilities, such as the Norton Utili¬ 
ties, will make effective use of filemax. 
However, the hierarchy of menus and 
functions is complex; even the veteran 
programmer will need time to master 
program operation. 

—GLENN ROBERTS 


MACE umiTEES, version 4.0 

Paul Mace Software 
123 N. First Street 
Ashland, OR 97529 
8001523-0258 


PRICE: $99 



CIRCLE 353 ON READER SERVICE CARD 


M ace Utilities from Paul Mace Soft¬ 
ware will be of special interest to 
anyone who has ever accidentally for¬ 
matted a hard disk that contained valid 
data. Mace Utilities can reconstruct a 
hard disk after a format, and more. 


The IBM description of the DOS 
FORMAT command has a dramatic cau¬ 
tion warning users that formatting de¬ 
stroys all of the data on the target disk. 
However, the DOS Technical Reference 
manual states, “When formatting a fixed 
disk, FORMAT checks all locations with¬ 
in the DOS partition, but does not phys¬ 
ically format them again.” 

The FORMAT procedure consists of 
two distinct operations: physical format¬ 
ting and logical formatting. Physical (or 
low-level) formatting, which is per- 


Now you can take command of MS-DOS with Command 
Plus, the programming shell and command processor that 
replaces COMMAND.COM in Versions 2.0 and above. 

What this means is that you can now program efficiently 
in DOS without having to learn UNIX. 

Programming efficiently means that Command Plus 
will increase your programming productivity and flexibil¬ 
ity by virtually eliminating the repetitive tasks DOS 
COMMAND requires. 

For example, Command Plus’ aliasing function lets you 
create fast, memory resident macros, while the history com¬ 
mand lets you use the cursor keys to recall, edit and exe¬ 
cute commands that you ran up to 48 command lines ago. 

What's more, Command Plus also equips you with 
Script, a batch processor that's easy to learn and 
unbelievably powerful. It's Pascal-like language includes 


formed only on diskettes, builds the 
skeleton (the so-called sectors) onto 
which a logical DOS disk structure is 
built. The hard disks are already physi¬ 
cally formatted when shipped by IBM. 
Logical (or high-level) formatting of a 
hard disk actually consists only of ana¬ 
lyzing it for any defective areas, and of 
preparing it to accept DOS files by ini¬ 
tializing the root directory and the file 
allocation table (FAT). 

IBM’s caution is not entirely accu¬ 
rate because FORMAT does not destroy 


control loops, conditionals and variables which let you 
create unique systems utilities. 

In short, Command Plus means that you can now pro¬ 
gram easily and efficiently in the familiar DOS without 
having to learn UNIX. 

It’s no wonder that Ray Duncan has already called Com¬ 
mand Plus “a very well designed and sound product!’ 

And has written that “The regular expression support, 
the enhanced copy, move and del commands, and the 
browse utility are particularly neat!' 

At only $79.95, plus shipping and handling, the price of 
Command Plus is pretty neat, too. 

So, if you want a sure-fire way to take command of DOS, 
or if you want more information about Command Plus, call 
us at (800) 992-4ESP. In California, call (213) 390-7408. 
VISA and MasterCard accepted. 


MS-DOS is a registered trademark of Microsoft Corporation. 


(800)992-4ESP (213)390-7408 



CIRCLE NO. 190 ON READER SERVICE CARD 



* 


INTRODUCING 
THE SURE-FIRE WAY 
TO TAKE COMMAND OF 




INTRODUCING 
COMMAND PLUS 
ONLY $79.95 


MARCH 1987 


171 











PRODUCT WATCH 


a hard disk’s data area. The root direc¬ 
tory and FATs are cleared with zeros, 
but data previously placed on the disk 
are still there and may be recovered. 

Because the content of a subdirec¬ 
tory is stored as -a-file within the data 
area, subdirectories are not destroyed 
by FORMAT and also can be recovered. 
All that is lost during a format is the 
original root directory pointer to the 
subdirectory “file.” A well-designed pro¬ 
gram can examine a freshly formatted 
disk and find “files” that are probably 


subdirectories. The Mace Utilities pack¬ 
age is designed to do just that. 

Mace Utilities consist of one pro¬ 
gram (RXBAK.EXE) that is to be exe¬ 
cuted periodically and another series of 
programs that are driven from a menu 
system. RXBAK takes a snapshot of the 
hard disk’s DOS partition boot sector, 
the FATs, and the root directory. This 
snapshot is copied into a special file 
that is stored at the logical end of the 
DOS partition. If a hard disk is acciden¬ 
tally formatted, Mace can copy this file 



The Advanced Programmer's Editor 
That Doesn't Waste Your Time 


• Fast, EMACS-style commands—completely reconfigurable 

• Run other programs without stopping Epsilon—concurrently! 

• C Language support—fix errors while your compiler runs 

• Powerful extension language • Great on-line help system 

• Multiple windows, files • Regular Expression search 

• Unlimited file size, line length • Supports large displays 

• 30 day money-back guarantee • Not copy protected 


Software Ltd 


5740 Darlington Road 
Pittsburgh, PA 15217 


for IBM PC/XT/AT's or compatibles 


CIRCLE NO. 125 ON READER SERVICE CARD 


back into the respective sectors from 
which it was created, thus restoring the 
directory to the state it was in the last 
time RXBAK was run. In most cases, this 
will allow the reclamation of some, if 
not all, of the lost data. 

Because RXBAK takes only a few 
seconds to run, a call to it can be 
placed within any frequently used batch 
file. It can preserve many hours of work 
by safeguarding critical data structures. 
Note that these file recovery methods 
are only salvage operations, and be¬ 
cause of that, the restored disk should 
be formatted once again after the recov¬ 
ered files have been safely transferred 
to another device. 

Even if it is not installed on the 
hard disk, Mace can be run from the 
diskette to recover data lost due to an 
accidental FORMAT. Mace is not able to 
recover any files that were in the root 
directory. They probably still do exist; 
however, all pointers have been lost as 
a result of the clearing of the directory 
and FAT. Although Mace does not know 
where DOS placed subdirectory files, it 
does know in general what they look 
like. Mace searches the entire disk look¬ 
ing for possible subdirectory candi¬ 
dates. Once subdirectories are located, 
all files and subdirectories can be par¬ 
tially, if not fully, recovered. Restored 
first-level subdirectories will appear in 
the reconstructed root directory as 
SUB1, SUB2, SUB3, etc. Inside each 
SUBrc, lost files can be found. 

Mace Utilities contain several other 
useful functions for both diskettes and 
hard disks; these include the usual file 
undelete function and the more ambi¬ 
tious diagnose, remedy, squeeze/sort 
directories, and condense functions. 
Diagnose attempts to read every sector 
of a disk looking for errors. If it finds a 
sector that it cannot read correctly and 
that has not been previously marked as 
bad (in the FAT), it issues a message 
advising that this file should be at¬ 
tended to at once. Diagnose does not 
repair the disk; the remedy function is 
designed for that purpose. 

Remedy is similar to diagnose, ex¬ 
cept that unreadable files are made 
readable with a minimal loss of data. If 
an unreadable sector is found within a 
cluster that is not allocated, it is locked 
out (in the FAT). If, however, an un¬ 
readable sector is part of some file, all 
readable sectors within a cluster are re¬ 
constructed and copied to another free 
cluster. The unreadable sector is filled 
with asterisks (*), and the FAT chain is 
relinked. Finally, the cluster containing 
the bad sector is locked out. If the file 


172 


PC TECH JOURNAL 



that contains the bad sector is a .BAT, a 
.COM, or a .EXE file, an error message 
is issued to the effect that this program 
probably will no longer execute prop¬ 
erly and should be replaced. It should 
be noted that the actions taken by 
remedy are permanent; therefore, it 
normally is run only after diagnose has 
been used to gather information about 
the damaged files. 

Squeeze/sort directories sorts the 
entries within a directory on one of the 
four fields (name, extension, date/time, 
or size) and moves all active directory 
entries to the top of the directory. This 
allows DOS to search through directo¬ 
ries without the time-consuming pro¬ 
cess of reading and analyzing entries 
for nonactive (deleted) files. 

As an option, squeeze/sort can set 
a flag within directory entries of .BAT, 
.COM, and .EXE files to “read only.” 
This prevents them from being deleted 
(this effect can be reversed with the 
DOS command ATTRIB) and also en¬ 
hances the performance of subsequent 
runs of the condense option. 

Condense performs all of the diag¬ 
nostic and repair operations described 
above, and then rearranges the files 
into a linear space. When it is finished, 
the files are contiguous (with the ex¬ 


ception of bad sectors) and packed 
from the front of the disk. The order of 
packing is directories, read-only files, 
and then all other files. Directories are 
now close to the root, which means the 
seek time will be minimized. Most ex¬ 
ecutable files are never operated on; 
they are merely read. Condense then 
packs all of the read-only files to the 
front of the disk, where they are close 
to the subdirectories and in one contig¬ 
uous segment. This implies that they 
can be accessed rapidly. 

The utilities Vcache, Vkette, and 
Vscreen have been added to version 4.0 
of Mace. These programs are designed 
to speed up hard disk and diskette 
transfers and output to video displays. 

The documentation with Mace Util¬ 
ities is adequate, and in some cases it 
provides more information than users 
will want. On-line help is available; esti¬ 
mated runtimes as well as function 
descriptions are provided. 

For $99, users can invest in a fairly 
comprehensive insurance policy for re¬ 
covering lost files. Mace Utilities may 
not be able to recover all of the infor¬ 
mation, but the product is able to sal¬ 
vage a great deal of lost data, and that is 
a worthwhile dividend. 

—GUY QUEDENS 


BASTOC 

JMI Software Consultants, Inc. 

904 Sheble Lane 

P.O. Box 481 

Spring Home, PA 19477 

215/628-0840 

PRICE: $495 



CIRCLE 354 ON READER SERVICE CARD 


A s production-quality C compilers 
have become available in the last 
few years, many programmers saddled 
with maintaining large BASIC systems 
have developed a keen interest in 
migrating software as painlessly as pos¬ 
sible to C, while rewriting a minimum 
of code. This conversion need is 



Only Now. 
and Count 


IA Analog, Digital 
ita...FAST! 


Solve Problems 
Others Can’t N** 

Now, your PC-based data acquisition and control systems 
can capture, analyze, and react to real-world events... in 
real time. Our new DMA plug-in carrier boards can help 
you create powerful, IBM-compatible PC systems... 
economically. 

• Modular magic. Configure a few points, or sophisticated 
systems up to hundreds of channels. 

• Pre- and post-event capture and foreground/background 

• High-speed software in BASIC, C, Turbo Pascal, and 
ASYST. 

Call or write for complete information and applications 
assistance. Burr-Brown Corp., P.O. Box 11400, Tucson, AZ 
85734. 602-746-1111. 


High Performance 
PC Data Acquisition Systems 


mi 

I INTRODUCES 


with 2 MBYTES 


only $ 295 * 

The Only Expanded Memory Card 
Which Can Save A Day Each Week. 

A major independent testing laboratory benchmarked a 
PC-XT equipped with FASTCARD and demonstrated a tenfold 
improvement over a PC-AT on typical Disk I/O operations. 


• Portable between IBM PC, XT, 
AT and compatibles. 

• Up to 2MB with Split Memory 
Mapping to 

- Fill memory to 640K 

- Provide Expanded 
memory over 640K 

• Unique Disk Caching 


• Ram Disks (up to 8MB) 

• Custom Password Security 

• Print Buffering 

• Built-in Diagnosis and 
Automatic Fault Tolerance 

• Factory Installed 
and Tested DRAM’s 


• Lotus/Intel/Microsoft compatible 

'Each FASTCARD III comes with 2 MBytes of Memory. 
FASTCARD IV, available with 2 MBytes, includes serial/parallel ports, 
game port and a clock calendar for $295. Dealer inquiries invited. 


For additional information, contact 


van 


at 


PERIPHERAL MARKETING INC. 602 - 483-7983 
7825 E. EVANS RD., #500, SCOTTSDALE, AZ 85260 


CIRCLE NO. 117 ON READER SERVICE CARD 


CIRCLE NO. 202 ON READER SERVICE CARD 

























PRODUCT WATCH 



The new 
F286 PC-AT 
compatible 
board-level CPU 
from I-Bus gives you a 
whole new dimension of 
speed and freedom in PC or 
PC-AT bus system design. 

It’s all on a PC add-on-sized board—for use with a 
passive backplane just like other board-level systems. 
You just add the expansion cards, put it in a box (I-Bus 
has loads of backplanes and boxes), and it’s ready to 
execute any PC-AT applications software. 

Use the F286 in a disk-based or diskless system, 
with or without a keyboard, with or without a display. 

It’s packed with features such as 10 MHz zero wait 
state operation. Separately clocked 80287 support 
(runs at full speed—not half speed as in other AT’s). 
512K RAM. Battery-backed clock/calendar. Optional 
PROMDISK to run any application from the F286’s 
user EPROM. 

And best of all, it’s designed, built and supported by 
I-Bus—the originators of the passive backplane 
PC Bus. 

If you’re into systems, we speak your language. 

Call us TOLL FREE at: 




The Full Service PC Bus Company 


5780 Chesapeake Court 
San Diego, CA 92123 TLX: 910 240 0290 

CIRCLE NO. 210 ON READER SERVICE CARD 



The classic Sieve of Eratosthenes benchmark program was 
used as a simple test of bastoc’s conversion capabilities. 



The IF-THEN of the BASIC program was changed to a C goto 
statement. The rest of the program is well structured. 


174 


PC TECH JOURNAL 
















addressed by bastoc, a software pack¬ 
age from JMI Software Consultants, Inc. 
bastoc accepts a BASIC program in 
source form as input and creates equiv¬ 
alent C source code from it. (bastoc 
was originally reviewed in “BASIC to 
C,” Ernest Tello, October 1984, p. 117.) 

bastoc is intended as both a migra¬ 
tion utility (making a one-time conver¬ 
sion of a program from BASIC to C) 
and as a production BASIC compiler 
that produces a C program as its output 
(for use in developing prototype or 
throwaway programs). The bastoc pack¬ 
age consists of a translator program and 
a runtime library in small and large 
memory models. The library contains 
support for dynamic string handling (a 
feature not normally found in C), 
screen control, and BASIC-style file I/O. 
The module ANSI.SYS must be present 
to use bastoc’s screen routines. 

C source code is provided for the 
runtime library, several translator func¬ 
tions, and data tables. The package is 
shipped with four diskettes and an 8^- 
by-11-inch spiral-bound manual, bastoc 
is not copy protected. 

Installation of the program is a 
straightforward procedure that is well 
documented in the manual. It consists 
of copying the files on the supplied 
diskettes to a single directory. Follow¬ 
ing installation, the directory includes 
two versions of the translator program, 
one that simply produces a C source 
file as output and another that acts as a 
complete compiler, calling the Micro¬ 
soft C compiler and linker directly after 
source translation. Also included in the 
directory are the runtime library in the 
appropriate memory model and a main 
program that handles intra-program 
chaining and COMMON variables. 

bastoc supports the BASIC.EXE 
(not the advanced BASICA) version of 
Microsoft BASIC for the PC. Statements 
that are not supported include PEEK, 
POKE, and VARPTR for large memory 
models (implying that assembler lan¬ 
guage subroutines need manual conver¬ 
sion), and all of the BASICA graphics 
and sound statements. The CHAIN, 
COMMON, RUN, and SHELL statements 
also have some restrictions. For most 
business software, this should prove to 
be an adequate subset of BASIC. 

Notably absent from bastoc is sup¬ 
port of the more recent Microsoft 
QuickBASIC and IBM BASIC Compiler 
version 2.0 enhancements, such as sepa¬ 
rate subroutines and ISAM files. In its 
current version (2.1c), however, bastoc 
has added support for some features it 
previously rejected: NEXT instead of 


NEXT variable , use of % for specifying 
integer variables, and READ...DATA 

The bastoc options control code 
optimization (including detecting and 
deleting unreachable code), default 
variable types, program organization, 
and subroutine handling (GOSUBs can 
be left in-line in a single, monolithic 
function or isolated into separate C 
functions). An new option in version 
2.1c optimizes expressions by using C’s 
increment and decrement operators 
wherever possible. Wild card file pro¬ 
cessing is not available. 

The code translated by bastoc for 
the BASIC version of the Sieve of Era¬ 
tosthenes (see “The State of C Interpret¬ 
ers,” Marty Franz, May 1986, p. 153 and 
“Reconsidering BASIC,” Marty Franz, 
December 1986, p. 142) is shown in fig¬ 
ure 2, with the original BASIC version 
in figure 1. A C goto statement and 
matching label have been added where 
the GOTO existed in the original pro¬ 
gram. The TIME_ function may need to 
be rewritten for some compilers. In 
general, the resulting C program is 
well-structured and fairly portable. 

Within the above framework, oper¬ 
ation of bastoc is straightforward and 
produces no surprises when the Micro¬ 
soft C compiler and linker are used. 
Other compilers may require modifica¬ 
tion to the runtime library. Most of the 
library functions are available in source 
form and are adequately documented 
by JMI; a knowledge of C is required to 
make the modifications. The more un¬ 
structured the BASIC source code is, 
the more unstructured the C output 
will be, especially when GOTOs and 
GOSUBs are used carelessly. A disci¬ 
plined BASIC coding style is the way to 
ensure that the G code generated by 
bastoc can be maintained. 

An important feature of the bastoc 
package is the translator, which can be 
modified and rebuilt to handle addi¬ 
tional functions and statement types. 

This gives it the potential for translating 
other BASICS, such as QuickBASIC, into 
C. Hooks have been provided into the 
translator’s key-word tables and recog¬ 
nition routines to allow user-written 
functions to be added, but this has not 
been well-documented in the manual 
and must be considered a technical 
challenge to even an experienced C 
programmer. Nonetheless, it should 
prove easier to extend bastoc than to 
write a comparable translator from 
scratch, bastoc is a competent program¬ 
ming tool for programmers converting 
large BASIC systems to C. liiam^l 

—MARTY FRANZ 


MARCH 1987 



SQL Compatible Query System adaptable to any 
operating environment. 


CQL Query System. A subset of the Structured 
English Query Language (SEQUEL, or SQL) 
developed by IBM. Linked files, stored views, 
and nested queries result in a complete query 
capability. File system interaction isolated in an 
interface module. Extensive documentation 
guides user development of interfaces to other 
record oriented file handlers. 

Portable Application Support System 

Portable Windowing System. Hardware 
independent windowing system with borders, 
attributes, horizontal and vertical scrolling. 
User can construct interface file for any 
hardware. Interfaces provided for PC/XT/AT 
(screen memory interface and BIOS only 
interface), MS-DOS generic (using ANSI.SYS), 
Xenix (both with and without using the curses 
interface), and C-library (no attributes). 

Screen I/O, Report and Form Generation 
Systems. Field level interface between 
application programs, the Query System, and 
the file system. Complete input/output 
formatting and control, automatic scrolling on 
screens and automatic pagination on forms, 
process intervention points. Seven field types: 
8-bit unsigned binary, 16 bit signed binary, 16 
bit unsigned binary, 32 bit signed binary, 
monetary (based on 32 bit binary), string, .and 
date. 

Including Source Code 
$395.00 

File System interfaces include 
C-tree and BTRIEVE. 

HARDWARE AND FILE SYSTEM 
INDEPENDENT 


JRTZBERG 

Gomputer Systems 

41-19 BELL BLVD. 

BAYSIDE, N.Y. 11361 


VISA/Master Charge accepted 

(718)229-4540 


*C-tree is a trademark of FairCom 

IBM. SEQUEL, PC, XT, AT are trademarks of IBM Corp. 
MS-DOS and Xenix are trademarks of Microsoft Corp. 

CQL and the CQL Logo are trademarks of Kurtzberg Computer 
Systems. 


CIRCLE NO. 148 ON READER SERVICE CARD 

175 



LAN REPORT 5 


A Hard Look at LAN Choices. 

Novell's LAN Report Package makes choices easier. 


The flexibility of local area net¬ 
works allows users to assemble 
LANs using network components 
that best suit the needs of the instal¬ 
lation. But choosing those compo¬ 
nents can be a confusing process. 

Novell, Inc., has published 
two reports designed to 
make the process easier: 
the LAN Operating System 
Report 1986 and the LAN 
Evaluation Report 1986. 

These reports help users 
evaluate network compo¬ 
nents and make informed 
decisions when choosing 
the components that meet 
their needs. Hardware and 
software issues are sepa¬ 
rately evaluated in the two 
reports, and extensive 
performance benchmarks 
are included. 


Choosing a network 
operating system, or LAN software, 
isthe most critical aspect of design¬ 
ing a network. Simply,the betterthe 
operating system, the better the 
network. The LAN Operating 
System Reportc ontains an in-depth 
analysis of LAN software, begin¬ 
ning with an examination of LAN 
software standards such as 
MS-DOS 3.1 and NETBIOS, and the 
file server environment. Issues like 
internetworking, system reliability, 
security and performance are 
addressed as well. 

The LAN Operating System Report 
also evaluates Novell Advanced 
NetWare, the IBM PC Network 
Program and 3Com 3 +. The report 
shows users how the design and 
implementation of these products 
translates into real performance. 


Hardware Options. 

The LAN Evaluation Report 1986 
focuses on evaluating network 
hardware. It examines hardware 
issues that affect LAN performance, 
including an analysis and bench¬ 
marking of major LAN products. 


"Hardware and 
software issues are 
separately evaluated 
in the 

two reports.. " 


A key element of the study is the 
NetWare Evaluation System. The 
system provides a mechanism for 
matching site needs to specific 
hardware. Whether a new network 
is being planned or an existing site 
is being upgraded, the study is 
useful in the performance evalua¬ 
tion of any network. 

System planning starts with the net¬ 
work interface card (NIC) and cabling. 
NICs analyzed in the study are: 

• AT&T StarLAN 

• Corvus Omninet 

• Davong Multi Link 

• Gateway G-Net 

• IBM PC Network 

• IBM Token Ring 

• Interactive Systems Vista LAN/PC 

• Nestar PLAN 2000 

• Novell S-Net 

• Proteon ProNET 


• Standard Microsystems ARCNET 

• 3Com EtherLink 

• 3Com EtherLink + 

The report analyzes each NIC 
according to its access scheme, 
raw bit rate, on-board processor 
and NIC-to-host transfer method. 

Another important compo¬ 
nent of the LAN is the 
network server. In examin¬ 
ing network servers, the 
LAN Evaluation Report 
looks at several perfor¬ 
mance indicators. Proces¬ 
sor type isthe most obvious 
feature to differentiate 
servers. However, other 
factors important in deter¬ 
mining server performance 
are also evaluated, includ¬ 
ing processor clock cycle 
speed, wait states, server 
memory cycle speed, mem¬ 
ory channel and transfer 
bus channel. And the report 
examines the effect of 
disk channel speed on 
network performance. 

In addition to providing a careful 
examination of LAN hardware, the 
LAN Evaluation Report features an 
evaluation formula. Using the 
formula, a LAN's estimated future 
site activity is measured and 
matched to the appropriate LAN 
hardware. 

To Get the Reports. 

The LAN Operating System Report 
1986and the LAN Evaluation Report 
1986 are available free of charge 
from Novell. To obtain a copy of 
the Novell Report Package, call 
or write Novell Corporate 
Communications, 122 East 
1700 South, Provo, Utah 84601, 
(801) 379-5900. 

1NOVELL 



Software Choices. 




-S TTrljSSHHI 


; VW ^ 


CIRCLE NO. 109 ON READER SERVICE CARD 















EXPERT CONSULTANT: APPLIED AI 


RICHARD L. SCHWARTZ and ROBERT E. SHOSTAK 


What Computers Cannot Do 

Certain mathematical problems simply cannot be solved by computer, 
no matter how big the program or how much time is available. 


'V't- ... 

L £*■» Me M 

. I (») - 

f 7* ^ J 

o * <f“ X" * r # t/ 

; >413 ^s: 

‘ ' * ' \ 


A rtificial intelligence is usually de¬ 
fined as a set of techniques for pro¬ 
gramming computers in a way that 
confers some of the attributes of human 
intelligence. The degree to which this 
endeavor will be successful is, of 
course, an open question. In principle, 
there is no reason why computers can¬ 
not be made as intelligent or more in¬ 
telligent than humans—indeed, the 
human brain appears to be nothing 
more than a massively parallel personal 
computer based on some inexpensive 
organic logic. A much more interesting 
theoretical question is not whether 
computers can do what people do, but 
rather what is it that computers can 
compute, human or otherwise. 

Ironically, the question of what 
types of problems can be solved purely 
through mechanical means was first 
posed long before the modern com¬ 
puter even came into existence. A great 
deal of attention was given to this issue 
in the 1920s and 1930s by a group 
headed by the well-known mathemati¬ 
cian David Hilbert. While Hilbert and 
his colleagues had never heard of 
FORTRAN, they nevertheless understood 
the concept of a program, or algorithm. 
Their dream was to mechanize all of 
mathematics so that a single algorithm 
could solve any problem that could be 
stated in a mathematical way. 

Hilbert and his associates made a 
certain degree of progress in the early 
1930s by devising general algorithms 
that could solve certain classes of prob¬ 
lems in mathematical logic. These early 
results were quite encouraging, and for 
a while it looked as if the livelihoods of 
unborn generations of computer pro-' 
grammers might be in jeopardy. 

In 1936, however, hopes for imple¬ 
menting Hilbert’s grand scheme were 
abruptly dashed by the logicians Alonzo 
Church and Alan Turing. Using different 
approaches, they proved that the so- 
called universal algorithm cannot exist. 
In fact, a consequence of what they 


demonstrated is even more remarkable: 
certain classes of problems in mathe¬ 
matics simply cannot be solved with 
computer programs, no matter how big 
the program or how much computer 
time is available. 

Their arguments rest on a certain 
assumption that has come to be known 
as Church's Thesis , which, in essence, 
postulates that the instruction set of a 
very simple hypothetical computer 
known as the Turing Machine is power¬ 
ful enough to use in coding any algo¬ 
rithm that could ever be programmed 
on any computer, existing or future. 

The Turing Machine consists of a 
tape transport with an infinite tape, a 
read/write head, and a finite-state con¬ 
troller. The tape is divided into individ¬ 
ual cells, each of which can store one 
bit of information. The read/write head 
scans a single cell of the tape at a time. 
The transport has the ability to move 
the tape one cell to the left or right 
upon the command of the controller. As 
might be expected, the controller is, at 
any given time, in one of a certain num¬ 
ber of states. One of these is designated 
as the Start state; another is known as 
the Halt state. 

The operation of the machine is 
quite simple. At each step, the read/ 
write head reads the currently scanned 
cell of the tape. On the basis of the cur¬ 


rent state and on what is read, the con¬ 
troller either writes a bit to the tape or 
moves the head left or right one cell. In 
either case, it transits to another (possi¬ 
bly the same) state. Execution begins in 
the Start state and terminates in the Halt 
state. The input to the machine is en¬ 
coded as the initial configuration of the 
tape; the output is given by what re¬ 
mains on the tape when the machine 
enters the Halt state. 

The operation of the controller can 
be summarized by a table (think of it 
as a program) that lists the state and 
head transitions. Figure 1, for example, 
shows a Turing Machine program that 
takes a positive integer as input, and 
multiplies it by two. An integer x is en¬ 
coded on the tape as a sequence of 
x + 1 Is, with Os everywhere else. As 
shown in the figure, the states of the 
machine are designated q 0 through q 8 , 
with q 0 as the Start state and q 8 as the 
Halt state. Each entry in the table is a 
quadruple specifying the current state, 
the value of the currently scanned cell, 
a write or move action, and the next 
state that is to be entered. For example, 
the quadruple q 4 0Rq 5 specifies that if 
the machine is currently in state q 4 and 
scans a 0, it should move one cell to 
the right and enter state q 5 . 

As an exercise, the operation of the 
machine can be simulated for an input 


MARCH 1987 


177 


ILLUSTRATION • MACIEK ALBRECHT 



We’ve seen a lot of 
Pascals, but this one takes 
the blue ribbon. Produces 
code smaller and faster 
than optimized C 
compilers. ISO- 
compatible. Supports the 
8087 in-line (8087 code 
emulation option if you 
don’t have the chip). True 
relocatable linker allows 
access to the Microsoft 
family of languages and 
assemblers. Four memory 
models. Overlays. 
Variable-length strings. 
Structured constants and 
structured function values. 
Separate compilation of 
modules. Procedural 
parameters. Powerful 
compile options 
(optimization by-pass for 
quicker compiles, syntax 
evaluator, I/O “fine 
tuning”, etc.). Turbo 
Pascal Translator brings 
your present Borland 
programs over to a 
ISO/Marshal-readable 
format. Watch the 
difference it’ll make in 
your software’s code size 
and speed! 

Suggested retail is $189.00. 

Our price is $159.00. 

FREE OFFER! ABC 
WRITER, a powerful 
WordStar clone with full 
Print/Merge capabilities 
FREE with each copy of 
Marshal Pascal! Only 
while supply lasts. 

Call (415) 930-9848-Ask 
for our free catalog of 
other software. 

INNOVATION 

COMPUTERS 

223 Donegal Way 
Martinez, CA 94523 

Turbo Pascal is a trademark of Borland 
International. 

WordStar is a trademark of MicroPro Inc. 
Microsoft is a trademark of Microsoft 
Corporation. 


EXPERT CONSULTANT: APPLIED AI 



1? WRITE 0 


1 ? MOVE LEFT 


1 ? MOVE LEFT 


1? MOVE LEFT 


1? MOVE RIGHT 


1 ? MOVE RIGHT 


1? MOVE RIGHT 


0? WRITE 1 


0? MOVE RIGHT 


FIGURE 1: Turing Machine Program 


q 0 

10 

q» 

qi 

OR 

q 2 

q 2 

10 

q 3 

q 5 

OR 

q 4 

q. 

1R 

q 4 

q 4 

OR 

qs 

qs 

1R 

qs 

q5 

01 

q 6 

q 6 

1R 

q 6 

q 6 

01 

q 7 

q 7 

1L 

q- 

q- 

0L 

q« 

q« 

1L 

q. 

q s 

1L 

qi 


0? HALT 


0? MOVE LEFT 


0? WRITE 1 


0? MOVE RIGHT 


1? WRITE 0 


0? MOVE RIGHT 


Each entry is a quadruple specifying the current state, the value of the currently 
scanned cell, a write or move action, and the next state to enter. 


of 2 (input tape ...OHIO...). Assume that 
the read/write head is initially posi¬ 
tioned at the first 1. The quadruples can 
be grouped into subroutines for per¬ 
forming actions, such as erasing an in¬ 
put digit or adding new output digits. 

_ With a little effort, a Turing Ma¬ 
chine program can be written to mul¬ 
tiply two numbers. More remarkably, 
and with quite a bit of effort, a Turing 
Machine can be programmed to emu¬ 
late the operation of a Cray super¬ 
computer. In fact, because a Turing Ma¬ 
chine has an infinite tape, while the 
Cray’s secondary storage is finite (at 
least, as it comes from the factory), the 
argument could be made that the 
Turing Machine is actually more power¬ 
ful than a Cray. The important point, 
however, is that even if the Cray had an 
infinite secondary storage, it could not 
compute anything that could not be 
computed, given enough patience, us¬ 
ing a simple Turing Machine. 

Church’s Thesis actually goes one 
step further. It says, in effect, that no 
matter what new hardware technology 
comes along, we will never be able to 
compute what we cannot compute now, 
given enough disk space and patience. 


Of course, this thesis is only a conjec¬ 
ture—it cannot be proved, and, in fact, 
it cannot even be stated in a precise, 
mathematical way. Still, it seems quite 
plausible, and at least so far, it has 
stood the test of time. 

What Turing showed specifically 
was that it is not possible to come up 
with an algorithm that solves the so- 
called halting problem —determining 
whether a given computer program ter¬ 
minates (as opposed to looping for¬ 
ever) on all inputs. Imagine writing an 
assembly language program on the PC 
that reads a file containing an arbitrary 
Pascal procedure and determines if 
there is some input for which that pro¬ 
cedure just loops forever without termi¬ 
nating. In fact, no such 8086 program 
exists—none could be written even if it 
could be arbitrarily large (but finite) 
and could take advantage of an infinite 
amount of disk space. 

Of course, Turing had never heard 
of an 8086 or Pascal. He phrased the 
halting problem in terms of Turing Ma¬ 
chines. How did Turing prove that the 
halting problem could not be solved? 
The answer is by using a clever tech¬ 
nique known as diagonalizatio? 2 . 


CIRCLE NO. 135 ON READER SERVICE CARD 

178 


PC TECH JOURNAL 

















Clarify your source code 

C, BASIC, Pascal, dBASE, Modula-2 programmers: be more productive 
with two new utilities from Aldebaran Laboratories 


“Occasionally, a utility 
comes along that makes a 
programmer’s life much 
easier. SOURCE PRINT 
is such a program. 

It contributes to the 
programmer’s job by 
organizing code into a 
legible format and by 
helping to organize the 
documentation and 
debugging process.” 

-— PC Magazine 
Sept. 16,1986 


Source Print and Tree Dia- 
grammer both have easy-to-use 
menus with point-and-shoot file 
selection, and let you search for 
files containing a given string. 
For IBM PC and compatibles 
with 256K. 

Join thousands of program¬ 
mers who are working more 
efficiently using Source Print 
and Tree Diagrammed Order 
these indispensable tools today. 
We ship immediately, and 
there’s no risk with our 60-day 
money-back guarantee. Order 
both and save. Only $115.00. 


800-257-5773 Dept. 33 

In California: 

800-257-5774 Dept. 33 

MasterCard, VISA, American 
Express, COD. Add $5 for shipping. 


Source Print and 'free Diagrammer are 
trademarks of Aldebaran Labs. dBASE is 
a trademark of Ashton Tate. 


150 —FOB INDX = 1 TO 100 

160 IF TB(INDX) s 0 1 

170 C = 50 

C NBILK K <= 1000 
TB(K) = 0 
K * K ♦ X 

DSHD 

160 OOSOB 2000 

190 XT(C) = X 

T2(C) : K 
C = C ♦ 1 
200 —NKXT INDX 


$ 75 ' 


Source Print™ j-— 

. , . ■ 160 IF TB(INDX) = 0 THEN X = 5 

organizes your source code, simpli- ■ Solo! 0 *,™ 11 * K <s 1000 re<K> = o: K -* ♦ x: 

fies debugging, and makes documen- I 200 NEXT 5 INDX T ^< C) - K- C . C ♦ 1 

. 4 . ■■'Mr. 1 . . ■ ^ 150 |— FOR INDX = 1 TO 100 

tation a snap! It lists one or more 1 g " = T f< lNDX > - 0 rm x - 5 

source files with informative page ["'H:'! 00 

headings and op- I ieo Sosm 2000 

tional line numbers, J 1 .««•(> ■ ™ c >: ; 

urkllo nffoTinn I 3 while (lar < nrea 44 aroa(lar][0] == c) | 200 l(En ' lW * BASIC 

i, r , I s r««D = s. 

invaluable features. I ? I - p* *<«ren[ior)m>; After 

The Index I j ,d = ’ p) ,--- 

(Cross-Reference I |) [ur"* | w g l 1 S;g£ 22! ° 3 INDEX (Cro8B Rel 

list) saves you time | || [Ur'' ^ I m™,* u.u* 

by showing exactly I 

where variables are . I **• g-gjj g-g;® 

used and where functions, pro- C^^OO I 54,2354 54:2364 54,2365 

cedures, and routines are called. H*/ V I intext «»&•' <BS. 43 * 1796 

Locations where new mammmmmmmammam 

»»;«»;« values may be assigned to 

public v.ji, v ,n variables are shown, making it easy to track down that 

gas^ij;i # asii-o./.i/M-, mysterious value change. 

Jr* 7 " d * 1 " * Structure Outlining solves the problem of hard-to- 

see nested control structures by automatically drawing 
lines around them. 

glrLv" Automatic Indentation of source code and listings 

L™? 1 ”’”" 1 " reduces your editing time and ensures indentation accuracy. 

[7JijVv::j u : Plus... Source Print generates a table of contents 

e sir?SH'jS“ listing functions and procedures. Keywords can be printed 
Zp7 in boldface oil most printers. Multi-statement BASIC lines 

71iS«r dBASE can s P^ t for readability. Functions and procedures can 

be drawn by name from one or more source files to form a 
new file. 

Tree Diagrammer™ j *** v £*2 ~ : 

shows your program’s overall organization at a I T ■ - ■ 5ALts c ,0 1 

glance. Ordinary program listings merely display ZZZZ __ 

functions, procedures, and subroutines sequen- ‘ZZ'L ” 

tially, but do not identify the relationships be- UiZZZ 

tween these routines. Our revolutionary new s^.r - „«, 

Tree Diagrammer automatically creates an L --- - ■ ,M “ ,C ,0 

“organization chart” of your program showing the ZZZZ c 

hierarchy of calls to functions, procedures, and ” - 

subroutines. Recursive calls are indicated and V 

designated comments in the source code —-SH- 

will appear on the chart. L. c . n , 

Tree Diagrammer helps you organize your tkj™... SALIS - C 11 | 

program more logically. And you’ll be amazed at B 

how easy it is to debug when you Pi K 00 
see how your routines interact. 30Q 



L UU UU1UUOV 

$ 55 ' 


Aldebaran Laboratories 3339 Vincent Rd. Pleasant Hill, CA 94523 415-930-8966 

YES! Rush Die □ Source Print @ $75_ □ free Diagrammer @ $55_ 

□ Both $115. Ship/Handling $5. For CA add 6% tax_Total_ 

Name-:-- 

Company- 

Address_ 

City_State_Zip___ 

□ Check enclosed □ VISA □ MasterCard □ American Express 

Card #_Exp. Date_ 

Signature-Phone#- : -3C 


CIRCLE NO. 106 ON READER SERVICE CARD 


















AMX 

Task Scheduler 


AMX Service 
Procedures 


User 

Tasks 


Interrupts 


User Device 
Service 
Procedures 


AMX Interrupt 
Supervisor 


the dBx ,M translator 

dBx produces quality C direct 
from dBASE II or III programs. 

Move dBASE programs to UNIX or other machines. 
Improve program speed and reliability 
Support multi-user/network applications. 

With power guidebook of conversion hints. 

Includes full screen handler and uses your 
current C database manager. 

May be used to move existing programs or help 
dBASE programmers learn C easily 

For MSDOS, PCDOS, UNIX, XENIX, Macintosh, AMIGA. 
(Uses ANSI.SYS driver on MSDOS, CURSES under UNIX) 

Priced from $350, also available from distributors. 


dBx is a trademark of 


Desktop Ai 


1720 Post Road E., Westport, CT 06880 MCIMAIL • DESKTOPAI 
Phone • 203*255*3400 Telex • 6502972226MCI 

CIRCLE NO. 214 ON READER SERVICE CARD 


386 


Pascal 


for MS-DOS 

MetaWare Incorporated announces the first 
available C and Pascal compilers that generate 

protected-mode 80386 code 

for running on any 80386 machine that runs MS-DOS (e.g., the 
Compaq Deskpro 386). The compilers are functionally identical to 
the well-respected 8086/286 MS-DOS High C™ and Professional 
Pascal™ compilers that have received outstanding reviews in such 
magazines as Computer Language, Dr. Dobb’s, and PC Tech Jour¬ 
nal. Our compilers are currently used by industry leaders such as 
AshtonTate, AutoDesk, ANSA, and Lifetree. Now you can get them 
generating 80386 code. 

If you have an application that requires the large 32-bit address 
space and the full 32-bit registers of the 80386, expand your mar¬ 
ketplace to the rapidly growing supply of 80386 MS-DOS machines. 
Contact MetaWare for your 80386 software solution today! 

(408) 429-6382, telex 493-0879. 

Durable Software Constructed Automatically m 


Hals 


INCORPORATED 


UJars 


903 Pacific Avenue, Suite 201 • Santa Cruz, CA 95060-4429 

•98E«98£*98£«98E»98E»98E»98£*98£*98£»98£*98E*98E«98E»98£*98E«98£ 

CIRCLE NO. 259 ON READER SERVICE CARD 


Real-Time Multitasking Executive 


■ No royalties 

■ Source code included 

■ Fault free operation 

■ Ideal for process control 

■ Timing control provided 

■ Low interrupt overhead 

■ Inter-task messages 

Options: 

■ Resource Manager 

■ Buffer Manager 

■ Integer Math Library 

■ Language Interfaces: 

C Pascal 
PL/M Fortran 

■ DOS File Access : 

CP/M-80 
IBM PC DOS 


AMX isTM of KADAK Products Ltd 
CP/M-80 is TM of Digital Research Corp. 
IBM. PC DOS areTM of IBM Corp 


AMX for 8080 
8086 
6809 
68000 


$ 800 US 
950 
950 
1600 


Manual (specify processor) 75 


KADAK Products Ltd. | 604 ) ^4-2796 

Telex: 04-55670 

206-1847 W. Broadway, Vancouver, B.C., Canada V6J1Y5 
CIRCLE NO. 258 ON READER SERVICE CARD 


SOFTWARE SENTINEL 






fWs Stop unauthorized use of software...and keep your cus- 

^ tomers happy at the same time. The no-interference hardware 
keys from the industry's leading supplier put money in your pocket and 
save you from angry customer complaints. Our product line includes 
devices for either parallel or serial port. The latest addition allows you to 
cover multiple programs with one device and/or customize 
as needed. Call for new low prices. 

SOFTWARE DEVELOPER BENEFITS 


»Prohibits unauthorized use 
of software 

• No need for copy 
protection 

• Algorithm technique 
(never a fixed response) 

• Virtually unbreakable 


• Higher level language 
interfaces included 

• 100 times faster (1ms) 
than fixed response devices 

• Minimal implementation effort 

• Runs under DOS and Xenix, on 
IBM PC, AT, XT & compatibles 


SOFTWARE USER BENEFITS 

»Unlimited backup copies • Pocketsize 

»No floppy required with • Transparent 

hard disk • Transportable 


EVALUATION KIT AVAILABLE 


17971 SKYPARK CIRCLE SUITE E, IRVINE, CA 92714 


(714)261-0228 


CIRCLE NO. 157 ON READER SERVICE CARD 


180 


PC TECH JOURNAL 


386«386*386*386»386*386*386*386»386*386«386*386*386*386*386*386*386*386*386*386*386*386*386*386' 








EXPERT CONSULTANT: APPLIED AI 



Assuming that its Goedel number is 137, KILLER calls HALTTEST with 137 as an 
argument. If the call to HALTTEST leaves a 1, KILLER loops forever. 


Here is the essence of the argu¬ 
ment. First, in principle, all possible 
Turing Machine programs can be enu¬ 
merated and assigned an integer. Natu¬ 
rally, an infinite number of such pro¬ 
grams exists, but, nevertheless, no more 
than the number of available integers. 
Such an enumeration of all possible 
programs is called a Goedel numbering . 
Goedel numbering is the theoretician’s 
version of the story about the comedi¬ 
ans who tell the same jokes over and 
over so often that they simply assign 
each joke a number. (Someone calls 
out 45, and only one comedian 
laughs—he had not heard it before.) 

Suppose that a Turing Machine 
program could solve the halting prob¬ 
lem. This program (call it HALTTEST) 
could take as its input the Goedel num¬ 
ber of an arbitrary Turing Machine pro¬ 
gram and determine whether or not 
that program halts on all inputs. If so, it 
would leave a 1 on the tape; if not, it 
would leave a 0. 


Next, consider a powerful and 
easy-to-use program named KILLER that 
calls HALTTEST as a subroutine, as 
shown in figure 2. (To be completely 
rigorous, KILLER should be specified as 
a set of quadruples; the flowchart 
shown in the figure is an abbreviation.) 
Assuming that its Goedel number is 
137, KILLER ignores its input and just 
calls HALTTEST with 137 as an argu¬ 
ment. If the call to HALTTEST leaves a 
1, KILLER loops forever; otherwise it 
quits, leaving a 0 on the tape. 

Either way, a contradiction is ap¬ 
parent. Because HALTTEST halts on 
all inputs, KILLER hangs if and only if 
HALTTEST(137) leaves a 1 on the 
tape. But by definition of HALTTEST, 
HALTTEST(137) leaves a 1 on the tape 
if and only if KILLER never hangs. The 
conclusion, therefore, is that such a 
HALTTEST program cannot exist. This 
argument works just as well for 8086s 
as it does for Turing Machines. Because 
8086s are so complicated to describe, 


PROTECT 
YOUR COPIES 
OF 


HEMHl 

OURNA 


Make your collection of PC TECH 
JOURNAL a handsome addition 
to your office or home—and pro¬ 
tect and organize them for easy 
reference! 


PC Tech Journal Magazine 
Binders and cases are made of 
durable luxury-look leatherette 
over quality binder board. Custom 
designed for PC TECH JOURNAL, 
every order receives FREE transfer 
foil to mark dates and volume 
numbers. 

FOR FAST SERVICE CALL 
TOLL-FREE 1-800-972-5858 


MAGAZINE BINDERS 

Hold your 
issues on 
individual 
snap-on 
rods. $8.95 
each; 3 for 
$25.75; 6 for $48.75. 


OPEN BACK 
CASES 

Store your copies for 
individual reference. $795 
each; 3 for $22.95; 6 for $43.95 



TEH 


P.O. Box 5120 


OURNAL. Philadelphia, PA 19141 


Please send □ Binders □ Cases Quantity_ 

Payment enclosed $_* Add $1 per order for 

postage & handling. (Outside USA, add $2.50 per unit 
ordered, US currency only.) 

Charge my: 

□ Amex □ Visa □ MC (Minimum order $10.) 


Card No._ 


_Exp. Date_ 


Mr./Mrs./Ms._ 
Address_ 


please print full name 


City_ 

State_ 

*PA residents add 6% sales tax. 


-Zip- 


MARCH 1987 


181 





























































THE SOURCE 
FOR All IBM 
PC EXPERTS. 

There's one place to 
find the information 
about the sophisti¬ 
cated applications 
and products you need 
at your work place. 

PC TECH JOURNAL 

It's the magazine 
that brings you the in- 
depth coverage 
about the products 
and issues you have 
to know more about 
13 times a year! 

Guarantee delivery 
of the technical infor¬ 
mation and insights 
the systems experts of 
PC TECH JOURNAL 
deliver issue after 
issue and save 50 %! 


imiril P.O.Box 2996 
JOURNAL Boulder, CO 80322 

YES Send me PC TECH JOURNAL for: 

□ One year (13 issues) only 
$26.70. 

□ Two years for only $53.35. 

SAVE 50%! 

Savings based on annual single-copy price 
of $53.35. 

Mr./Mrs./Ms- 

Company_ 

Address_ 


City. 


.State. 


.Zip. 


□ Bill me □ Payment enclosed 
Add $6 per year for postage outside USA, 

US currency only. Please allow up to 60 
days for delivery of first issue. 

Annual basic subscription price is $34.97. 
For faster service call Toll-Free 
1-800-852-5200 today! 

Your subscription includes the Special 
PC TECH JOURNAL Directory published 
in November! 4Z643 


EXPERT CONSULTANT: APPLIED AI 



FIGURE 3: Domino Example and Solution 


To solve this set of dominoes, a pattern is generated (inside blue square) whose 
left and right edges have the same color sequences, as do the top and bottom. 


however, it is easier to give a rigorous 
formulation for Turing Machines. 

The halting problem is the proto¬ 
typical instance of certain problems in 
theoretical computer science known as 
decision problems. An infinite class of 
yes-no questions is said to be decidable 
if and only if a computer program can 
be written that is guaranteed to answer 
each question in the class. 

The undecidability of the halting 
problem has implications for fundamen¬ 
tal questions in mathematics and logic. 
For example, the principle underlying 
this result is the basis of the well- 
known Goedel’s Incompleteness Theo¬ 
rem, which states that certain mathemat¬ 
ical truths simply cannot be proved. 

The consequences are not merely of 
theoretical interest, however. Believe it 


or not, the inability to solve the halting 
problem imposes limits on how well 
compilers can optimize compiled code. 
More generally, it limits the ability to 
write programs that can analyze other 
programs. It implies, for example, that 
programmers can never hope to write a 
single, general-purpose program that 
determines whether or not a piece of 
code contains bugs. 

SOLVABLE DOMINOES 

An interesting game was devised by 
Hao Wang at Bell Laboratories just for 
the purpose of studying the halting 
problem and other questions of decida¬ 
bility. Wangs game is a variation of soli¬ 
taire played with colored tiles he refers 
to as dominoes. His dominoes are 
square-shaped and are painted in such 


182 


PC TECH JOURNAL 

































































No general method exists for determining whether or not a given set of dominoes 
has a solution. This three-piece set may or may not be solvable. 



Even without using a general method, a player can still try ad hoc approaches to 
determine whether or not a particular set of dominoes can be solved. 


a way that each of the four sides can be 
a different color. Moreover, each square 
has a definite orientation—that is, it 
cannot be rotated. In this domino game, 
players are given a finite set of dom¬ 
inoes of which they are allowed to 
make as many copies as they wish. The 
object of the game is to cover an infi¬ 
nite plane with dominoes in such a way 
that adjacent edges are the same color. 

If the entire plane can be covered in 
this way, then the set of dominoes is 
said to be solvable. 

Figure 3 shows a set of three dom¬ 
inoes. This particular set is solvable, be¬ 
cause it can be used to tile the plane 
using the pattern also shown in figure 
3. The pattern is generated by repeating 
a nine-domino unit whose left and right 
edges have the same sequences of 


colors, and whose top and bottom 
edges also follow the same color se¬ 
quences. Clearly, any time a repeatable 
unit of this type can be formed, a solv¬ 
able set is possible. (It is possible to 
show, however, that some solutions to 
domino problems do not consist of a 
repeating block.) 

Wang was able to use dominoes to 
simulate Turing Machine computations 
and therefore to create the equivalent 
of the halting problem. Wang and his 
colleagues showed that for a given 
Turing Machine program, a set of dom¬ 
inoes can be devised that has a solution 
if and only if that program hangs. His 
construction starts with the table of qua¬ 
druples giving the program and gener¬ 
ates dominoes that simulate the action 
of reading the tape, making state transi¬ 


tions, and so on. Because the halting 
problem is undecidable, it follows that 
no general method exists for determin¬ 
ing whether a given set of dominoes 
has a solution. 

Even without a general method, 
ad hoc approaches still can be used to 
determine whether or not a set of dom¬ 
inoes has a solution. Figures 4 and 3 
present two sets of dominoes that may 
or may not be solvable. Solutions or 
arguments for unsolvability of these sets 
will be published in our next column. 

While Wang’s reduction is too com¬ 
plex to detail here, it should be noted 
that an important step along the way 
was the observation that a particular set 
of dominoes can tile the entire plane if 
and only if it can tile a single quadrant. 
Obviously, given that a player can tile 
the whole plane, he can cut out three 
of the four quadrants in order to find a 
solution for a quadrant. The converse is 
by no means obvious, but can be estab¬ 
lished by noting that a tiling for a quad¬ 
rant necessarily contains a subtiling of 
size n-by-n, for each n. An infinite tree 
of these partial solutions can be con¬ 
structed, and an infinite path can be 
found through the tree in order to yield 
a solution that covers the entire plane. 
Therefore, if a quadrant can be tiled, so 
can the plane. 

Wang’s games of dominoes were 
not merely of recreational interest. He 
was able to use them in order to close 
what was then an open question in 
mathematical logic. Specifically, he 
showed that the problem of determin¬ 
ing the validity of members of a certain 
class of logical formulas can be sim¬ 
ulated using dominoes. The formulas in 
question have the form “There exists an 
x such that for all y , there exists a z 
such that...” followed by a subformula 
containing no “for all” or “there exists.” 

Perhaps the greatest importance of 
Wang’s dominoes is that they vividly il¬ 
lustrate an important technique used in 
many computer science disciplines and 
particularly in artificial intelligence— 
that is the technique of solving a prob¬ 
lem by reducing it to another problem 
whose solution is already known. The 
domino reduction actually uses a con¬ 
trapositive form of that technique, in 
which a given problem is shown to 
have no solution by reducing another 
problem (the Halting problem, in this 
case) that is known to be intractable to 
the given problem. 1 "iTTmiin 


Richard Schwartz , Ph.D., and Robert Shostak, 
Ph.D., are vice presidents of software develop¬ 
ment and cofounders of Ansa Software. 


MARCH 1987 


183 






































































AW . . . 


WHAT THE HECK! 


PRODESIGN II STILL ONLY $299! 



FRONT ELEVRTION 

1 /H" : l ‘ 0" 


ProDesign II — Still $299! 

ProDesign II—the Easy-to-Use CAD System. .The CAD 
system that was introduced two years ago for the amazingly 
low price of $299. The CAD system that has undergone four 
major revisions with more than 400 enhancements. The CAD 
system that still costs only $299! 

How do we do it? Our accountants said to raise the price 
to cover research and development costs. Our business 
advisors said to charge more for the additional features. Our 
competitors said it's impossible to stay in business selling a 
comprehensive CAD package such as ProDesign II for only 
$299. 

And our customers said $299 is great. So, we said: 

"Aw... What the Heck! $299 it is!" 

Now, two years after its introduction, ProDesign II is one 
of the world's leading CAD packages. It has features pre¬ 
viously found only on CAD systems costing thousands of 
dollars. For the single price of $299, you get these features 
and more: 

• Support for more than 180 printers (including color 
printers) 

• Support for more than 80 plotters, with plotter optimi¬ 
zation. 

• Easy-to-Use single keystroke commands. 


• On-screen menus accessible with a mouse. 

• Comprehensive drawing commands, including the finest 
curve fitting in the industry. 

• Editing features unsurpassed by ANY other CAD package. 

• Extensive snap features, including snap to point, endpoint, 
midpoint, line, circle, ellipse, arc, intersection, and perpen¬ 
dicular. 

• True Auto Dimensioning with several formats. 

• Extensive Layering features. 

• Full Macro capabilities. 

• Specialized drawing aids, such as tangents to circles and 
ellipses, parallel lines, parallel curves, wide lines, and more. 

• Complete hatching with up to 40 different patterns. 

• Area and length calculation for line curves, circles, etc. 

• Full Zoom, Pan, and Rotate capabilities. 

• Capability to transfer drawings to and from other programs. 

• Capability to Break/Trim Lines, Curves, Circles, Arcs, and 
Ellipses. 

• Many more features — All for only $299! 

Where do you get ProDesign II? See your local computer 
dealer, or contact: 

American Small Business Computers, Inc. 

118 South Mill Street 
Pryor, OK 74361 
(918) 825-4844 
Telex 9102400302 

Want more information? Call or write fora detailed brochure 
and a free demo disk! 


CIRCLE NO. 118 ON READER SERVICE CARD 
































































































































































































































































































BOOK REVIEWS 


Approaching Modula-2 

Two books attempt to complement Nicklaus Wirth’s own 
work regarding his Modula-2 programming language. 



Modula-2: A Seafarer’s Guide 
and Shipyard Manual 

Edward J. Joyce (Addison-Wesley; 
Reading, MA; 1985) 270 pages; 
paper, $16.30 

Modula-2: A Software Develop¬ 
ment Approach 

Gary A. Ford and Richard S. Wiener 
(John Wiley* & Sons; New York, NY, 
1985) 400pages;paper, $30.75 

The programming language Modula-2 is 
gathering a large, and ever-growing, fol¬ 
lowing in the computing community. 
Several good PC implementations of the 
language have recently appeared, mak¬ 
ing Modula-2 a strong contender for 
use in any PC programming project 
(see “Modular Developments,” John 
Cockerham, this issue, p. 114). The two 
books reviewed here take differing 
viewpoints in their approaches to this 
modular programming language. 

What is needed most of all on a 
Modula-2 programmers bookshelf is a 
complete, accurate, easy-to-understand 
reference book on this modern descen¬ 
dant of Pascal. Edward J. Joyce’s Mod¬ 
ula-2: A Seafarer's Guide and Shipyard 
Manual goes only partway toward 
achieving this goal. Its relaxed, conver¬ 
sational style provides welcome relief 
from the dry, formal writing of the de¬ 
finitive Modula-2 text, Programming in 
Modula-2 by Niklaus Wirth, the original 
designer of the language. Wirth’s book, 
which is filled with Backus-Naur nota¬ 
tion and cryptic writing, is almost too 
concise to be readable. 


On the other hand, A Seafarer's 
Guide , while much more readable, sac¬ 
rifices accuracy and completeness. The 
organization of the book is, indeed, 
quite baffling; by chapter 2, the author 
has presented several sample programs, 
each of which uses features of the lan¬ 
guage that have not yet been explained. 
For example, Joyce discusses the for¬ 
matted input and output available 
through the Modula-2 library proce¬ 
dures Writelnt and Readlnt despite the 
fact that these procedures are not exam¬ 
ined in detail until 70 pages later. 

One of Modula-2’s most important 
features is its ability to handle separate 
compilation. It is this capability that 
makes the language attractive for large, 
team programming projects and for any 
software development effort in which 
data and procedural abstraction and in¬ 
formation hiding could be useful. If 
Modula-2 is nothing else, it is the mod- 
wlar programming /^nguage. Yet, in this 
book, modules and separate compila¬ 
tion are glossed over until the last 30 
pages of the text, where they are given, 
at best, a cursory treatment. The author 
places little emphasis on the features 
that make Modula-2 an interesting and 
unique programming language, and 
chooses instead to arrange the text 
around the syntax alone. 

Sample Modula-2 code appears 
throughout the text, but few complete 
programs are listed, and those that are 
complete, are simplistic. One 16-line 
program is the only example that is 
given in the text of Modula-2’s separate 
compilation facilities. 

The book does not present a cohe¬ 
sive picture of the standard Modula-2 
function libraries for file and terminal 
I/O, dynamic memory management, real 
math functions, and so on. These librar¬ 
ies are not guaranteed to be identical 
across implementations, so it is rather 
important to distinguish between base 
language features and features of the li¬ 
brary modules. This important distinc¬ 


tion is left unclear in the text because 
base language and library features are 
scattered throughout the book and are 
only explained as they crop up in the 
sample programs. 

Joyce’s Modula-2: A Seafarer's 
Guide and Shipyard Manual is an ap¬ 
propriate text for the programmer who 
simply wishes to learn the syntax of 
Modula-2 quickly and painlessly. It is 
not well suited for the software devel¬ 
oper who is interested in understanding 
the reasoning behind the design of 
Modula-2, nor is it appropriate for the 
programmer who is evaluating Modula- 
2 as a possible implementation lan¬ 
guage for a software project. Its haphaz¬ 
ard organization, poor examples, and 
lack of emphasis on the strong points of 
the language make this a book that is 
truly lost at sea. 

Modula-2: A Software Development 
Approach , by Gary A. Ford and Richard 
S. Wiener, takes a completely different 
tack and, as a result, offers the reader a 
more complete treatment of its subject 
than does Joyce’s book. A Software De¬ 
velopment Approach is more a text on 
the methods of software engineering 
than a guide to a particular program¬ 
ming language. Although the book is di¬ 
vided into two sections—the first part is 
on Modula-2 as a language, and the sec¬ 
ond is on Modula-2 as a tool for soft¬ 
ware development—the emphasis of 
the entire book is, as its title suggests, 
on software development. 

As the authors present each feature 
of Modula-2, they are careful to discuss 
not only its syntax, but also the reason 
for including it in the language; the 
reader is not left to guess the intentions 
of the language designer. 

Ford and Wiener present many rel¬ 
evant examples, and the sample pro¬ 
grams illustrate well both the syntax of 
the language and the software develop¬ 
ment concepts (data and procedure ab¬ 
straction, information hiding, and so 
on) that Modula-2 was, in fact, designed 


MARCH 1987 


183 







THIS CARD 
GIVES A COLLEAGUE 
A YEAR’S WORTH 
OF VALUABLE INFORMATION 
AND INSIGHT 



W hen you give PC TECH JOURNAL as a gift 
to a client or business colleague, 
you’re giving valuable information on 
systems design and integration. 

PC TECH JOURNAL is the recognized source of 
expert facts for designers, integrators and DP/MIS 
professionals who require current information and 
sophisticated applications and input. 

Give a gift that’s delivered 13 times* a year and save 50 % off the 
annual single-copy price of S53.35. 

*Your gift subscription includes the special PC TECH JOURNAL Directory 
issue published in November! 

^C7QL_[ P.O.BOX2966 
r.v^rn boulder ,0080322 

OURNAL 

Send Gift TO: 

Mr. /Mrs. /Ms. 

Company_ 

Address_ 

City. 


please print full name 


. State. 


.Zip. 


Send Card FROM: 

Mr. /Mrs. /Ms_ 

Company_ 

Address_ 

City. 


. State. 


. Zip. 


□ Bill me □ Charge my credit card for $26.70 for 13 issues. 

Check one: □ AmEx □ Visa □ MasterCard 

Card No_Exp. Date. 


Add 56 for postage outside USA, US currency only. Please allow up to 60 days for delivery of first issue. 
Basic annual subscription price is 534.97. 

L ^?R FASTER^ERVliCE CAL LJOLL-FREE 1-800-852-5200!^_| 


BOOK REVIEWS 


to support. Complete listings of several 
Modula-2 utility libraries (modules) are 
included; among them are complex 
number, stack, queue, and character 
string modules, each of which is imple¬ 
mented several different ways. Also 
listed are modules implementing dy¬ 
namic memory allocation, process 
synchronization, and a simple text edi¬ 
tor with a spelling checker. 

The book mentions several short¬ 
comings of the language (such as its 
lack of support for generic data abstrac¬ 
tion), but emphasizes possible solutions 
and work-arounds, not the problems 
themselves. For example, when noting 
the very primitive nature of Modula-2’s 
concurrent processing facilities, the au¬ 
thors provide listings of modules to 
handle shared variables, interprocess 
buffers, and channels, giving an out¬ 
standing example of Modula-2 s flair for 
software tool building. 

Although A Software Development 
Approach is concise and well-organized, 
it sometimes goes into more detail than 
is really necessary. For example, as they 
discuss dynamically-allocated data struc¬ 
tures, Ford and Wiener explain the dif¬ 
ference that exist between singly and 
doubly linked lists; this is not the mate¬ 
rial of a programming language text or 
even a text on software development, 
but rather one on basic data structures 
and algorithms. Wirth’s own book on al¬ 
gorithms and data structures in Modula- 
2 was reviewed in “A Classic Revised,” 
Book Reviews, Michael A. Covington, 
January 1987, p. 187. 

This book is not ideal for those 
programmers who know Pascal and 
want to get up to speed quickly in Mod¬ 
ula-2. However, such programmers 
should be able to skim the early chap¬ 
ters in order to understand the differ¬ 
ences between Modula-2 and its prede¬ 
cessor, Pascal. Unfortunately, this text 
does not provide a summary of the dif¬ 
ferences between the two languages. 

A Software Development Approach 
emphasizes software development so 
extensively that it would not be difficult 
to substitute another language, say Ada, 
for Modula-2 in the text. This is not to 
say that the book’s description of Mod¬ 
ula-2 is not accurate and complete; in 
fact, it makes a compelling argument 
for Modula-2 largely because it empha¬ 
sizes principles of good software engi¬ 
neering. This book is a good reference 
for the serious Modula-2 user and an 
excellent introduction to the language 
for anyone considering using Modula-2 
for a programming project. m 

—ARTHUR A. GLECKER 


186 


PC TECH JOURNAL 
















Whetstones/sec 


Microsoft 3.31 


Lahey 2.0 


Thi S is the one. 

Whatever the yardstick, 

RM/FORTRAN™ blows 

the others away. Microsoft 3 si 

Sieve? RM/FORTRAN ■ i n i ■ 

runs 26% to 228% ! 

^Whetstones? ^l 2 ' 0 , | | 

RM/FORTRAN is 11 1 1 11 

20% to 33% better. | *Single precision. Run on IBM PC// 

And those aren’t our i 

benchmarks. They’re the s- _J 

industry standards. ( 7 

With RM/FORTRAN, g 

you can actually feel the ~~ 

difference in the seat of your pants . . . because 
you’ll do less sitting and waiting for those 
big, complex mainframe programs to run on 
your micro. In fact, an ARPANET Bulletin 
Board user said, . . for serious conversion 
work of mainframe Fortran code, use the 
Ryan-McFarland ...” 

RM/FORTRAN is also the first and only PC 
Fortran GSA certified at Full Level ANSI 77 
with no discrepancies. So programs move effort¬ 
lessly from your mainframe to a PC, XT, AT or 
compatible. And they also port to 68000-based 
systems or new 80386 machines. You may already 
be using version 1.0 under the name “IBM PC 
Professional Fortran by Ryan-McFarland.” 

RM/FORTRAN comes with popular 
extensions from "VAX, VS and Fortran 66. That’s 
more mainline mainframe extensions than any 
other micro Fortran. 

And there’s more. PC TECH Journal, for 


119,000 


99,300 


89,700 


Single precision. Run on IBM PC/AT (6 MHz) with 80287, PC-DOS 3.2 






y~V example, said our 
jO“compiler’s documentation, 
ease of use, speed of 
execution, and debugging 
facilities place it first for 
recommendation. ” 

But why spend any 
more time reading when 
you should be filling out 
12 the coupon and getting 
your free “RM/FORTRAN 
Tools, Utilities and 
Applications Directory” and 
- sample benchmark programs to 
y run on your own PC. 

/ Remember, if it isn’t 
* RM/FORTRAN, it’s just a 
Fortran also-ran. 


Ryan-McFarland 
609 Deep Valley Drive 
Rolling Hills Estates, CA 90274 
or call 213-541-4828 


RYAN-McFARLAND 




r— 

7 Knock me out. Send me the benchmark 
| programs and the free Applications Directory. ■ 


Company 


Phone ( 


CIRCLE NO. 137 ON READER SERVICE CARD 






NEED IT FAST? 
WANT TO KNOW MORE? 
DON’T HAVE TIME TO 
SHOP AROUND? 


INTRODUCING 


• • • 


I f you’re like most system pro¬ 
fessionals you’re up-to-date 
about the products in the PC 
marketplace. You’re aware of 
brand and model differences, are 
informed about connectivity and 
compatibility problems, and you 
shop for competitive prices and 
fast service. 

You’re also probably among the 
many PC TECH JOURNAL readers 
who purchase by mail. That’s 
why we’re starting THE MART— 
PC TECH JOURNAL’S First Class 
Mail-Order Section. 

Starting this month, and every 
month hereafter, you’ll find the 
products you’re looking for 
advertised in THE MART—and 
you’ll benefit from the fast 
service and helpful support that 
identifies PC TECH JOURNAL 
advertisers. 

If you’re ready for First Class 
service, you’re ready for THE 
MART. 



FIRST CLASS MAIL ORDER SECTION! 


AST ADVANTAGE W/128K.$365 

VI DO 7 VEGA EGA .$425 

GENOA SPECTRUM.$295 

FORTE PJ.$875 

INTERNAL HARD DISKS FOR THE AT 
SEAGATE USED BY IBM 

PRIAM 40 MB.$1195 

PRIAM 60 MB.$1395 

RODIME 20 MB.$595 

RODIME 32 MB.$695 

CORE 20 MB F".$1195 

CORE 30 MB ' F".$1395 

CORE 40 MB.$1795 

CORE 56 MB. $2595 

&39QA 


IB ^ T1 I . IMMsj 

e reflects quantity purchaj 


'lot’s enha 
or softwar 
mpatibles 


"HOT" NEUIPRODUD 


★ AMERICA’S 
LOWEST PRICES 
ARE EVEN LOWER NOW 


4B Yi HT. 


(25 MS) 


UNIock ALBUM “A” 

Q1Q QC (Plus $4 ship/handling 1 

Foreign orders $10) 

• LOTUS 1- 

• dBASE II 
•FRAMEW 

• SYSTAT™ 

• SPOTLIG 

• GRAPHS 

• REALIA l 

-2-3™ (1.A, 1.A*. 2.0) 

1™ (1.0, 1.1. 1.2 & PLUS) 

'ORK™ (1.0.1.1. It) 1 

1 (1.3 & 2.0) 

HT™ (i.o & i.i) ; 

fRITER™ (4.3 & 4.31) : 

COBOL™ (1.2,2.0) i 


EC VT-100/VT-52. a Retrog 
). a Tektronix 4010/4014 or 
Tektronix 4027. Over 12.01 
rrently in use world-wide at 
ations. educational facilities 
nd independent consulting 


information call toll free 


(25 MS) 


B F. HT. 


(25 MS) 


IBM XT 256K/1 Dr 20 MB 
IBM XT 256K/1 Dr. 30 MB 
IBM A T ;" 2K/20 MB 
IBM AT 512K/30 MB 
Compaq Desk Pro-1 128K/1 Dr 
Compaq Portable 256K/2 Dr. 

AST 6 PAK w/384 K/Advantage 
MCI MSC w/384K 
Samsung- PGS Max 12 10S 

Princeton HX 12/E 43E 

Hercules Color Card/Monochrome graphic 15( 
Hayes 1200B w/SW 
US Robotics Courier 2400 


IPEP1 


E 


SPECIALS 


MR Hard flick 


Perfo 
Drive Subsyste 
DRIVE PEL 
j Configuration j Sta 


AT SPEEI 


industry's recognized leader in High Performance Sp€ ji 
ve performed extensive research and developed unmatc ;i 
field. Our products offer the COMPLETE solution. 

-Switch from five frequencies including the standi: 
IMz. Uses reliable frequency synthesis to allow compote j 
h all IBM ATs including the TYPE 2 and Model 239 
ISpec Crystals-The famous Ariel cyrstals. Choose from; 

17-18-19-20-21-22-23-24 MHz. 

FAST 80286-1 0-Micro-processor for 20-24 MHz speeds 
FAST RAM-For System Board 128K 120 & lOO NS 


INTRODUCING 


4CaST/2 T 


Complete 

Forecasting 

System 


Both versions run on IB* 


For marketing, planning, financial 
and forecasting professionals: 

■ Easy to use menus with on-screen help 
facilities 

■ Most often used forecasting methods 

■ Popular spreadsheet interfaces 

■ Outstanding color graphics 

■ Fast RAM-based program 

■ Thoroughly tested and numerical!) 
accurate 

■ Exponential smooth 

■ Step-wise and robusi 
capabilities 

■ Macro language for 
applications 

■ Full documentation 

Only: $350 Demo l 

4CaST/2X: includes a f 
version of the Census’X 
Only: $595 Demo T 


IB for AT 57! 

ISA MC AMEX COD PO 


lC a9 0> 






“Top Sellers Series” 
UNIock DISK ‘‘NO. 101” 

up/handling 


$14.95 


LOTUS 1-2-3“ 

(1-A. 1.A-. 2.0) 

‘‘Top Seller Series” 
UNIocks individual 
best selling programs 
at a special low price! 


re ( 














































MICROWAY MEANS 8087 PERFORMANCE 


FastCAC H E-286™ 

Runs the 80286 at 8.5 or 11 MHz and the 
80287 at 5, 6 or 11 MHz Includes 8 
kbytes of 55ns CACH E Works with more 
PCs than any other accelerator, including 
Leading Edge Model D, Compaq, and 
Turbo motherboards Includes 8088 
Reboot Switch, DCache and Diagno¬ 
stics . From $449 


LOTUS/INTEL EMS 
SPECIFICATION BOARDS 

MegaPage™ The only EMS board which 
comes populated with two megabytes of 
cool-running, low power drain CMOS 
RAM installed Includes RAM disk, print 
spooler, disk cache and EMS drivers For 
the IBM PC, XT and compatibles... $549 

MegaPage with 0K. $149 

MegaPage AT/ECC™ EMS card for the 
PC AT and compatibles includes Error 
Correction Circuitry. With ECC, 11 RAM 
chips cover 256K so the user never en¬ 
counters RAM errors Sold populated with 
1 megabyte CMOS .. . $699 or with 3 
megabytes CMOS cool running low 
power drain RAM ... $1295. Optional 
serial/parallel daughterboard.$95 


NUMBER 

SMASHER/ECM T 

Triples the speed of your 
PC, XT or compatible! 

From .^yll 

$599 Ji 


A Megabyte 
for DOS 

PC Magazine “Editor’s Choice” 


DATA ACQUISITION and 
REALTIME TOOLS 

DAL'“ - “Data Acquisition Language" 
Unkelscope " - A real time data acquisi¬ 
tion, control and process software pkg. 
87FFT and 87FFT-2 
TransView Menu driven FFT Spectrum/ 

transfer analyzer. $250 

RTOS- REALTIME OPERATING SYSTEM 
A multi-user, multi-tasking real time oper¬ 
ating system Includes a configured ver¬ 
sion of Intel’s iRMX-86, LINK-86, LOC-86, 
LIB-86, OH-86 and the MicroWay 
87DEBUG. Runs on the IBM-PC, XT, PC- 

AT and COMPAQ.$600 

INTEL COMPILERS Available for RTOS 
FORTRAN-86, PASCAL-86, PL/M-86. 


A2D-160™ 

The Fastest 12 bit 
A/D Converter 


287 Turbo™-10/12 


$1295 


160,000 Samples per second 
Pseudo Random Noise Generator/DAC 
Optional signal conditioners 
AFM-50 Programmable Low Pass 
Filter Module. $225 


fi«|| 287Turbo runs the 80287 
at 10 or 12 MHz in the IBM 
I PC AT, compatibles and the 
pi: new Compaq 386 with 100% 
Ipjg software compatibility. 

12 MHz.$550 

PC Magazine “Editor’s Choice” 

8087 SOFTWARE 

IBM BASIC COMPILER.$465 

MICROSOFT QUICK BASIC.$79 

87BASIC COMPILER PATCH.$150 

IBM MACRO ASSEMBLER.$155 

MS MACRO ASSEMBLER.$99 

87 MACRO/DEBUG.$200 

MICROSOFT FORTRAN.$209 

RM FORTRAN.$399 

LAHEY FORTRAN F77L.$477 

MS or LATTICE C. CALL 

STSC APL* PLUS/PC.$450 

STSC STATGRAPHICS.$675 

SPSS/PC +.$675 

87SFL Scientific Functions.$250 

PHOENIX PRODUCTS. CALL 

FASTBREAK for 1 -2-3 V.1 A.$79 

HOTLINK for 1 -2-3 V.1 A.$99 


8087 UPGRADES 

All MicroWay 8087s include a one year 
warranty, complete MicroWay Test Pro¬ 
gram and installation instructions 

8087 5 MHz $114 

For the IBM PC, XT and compatibles 

8087-2 8 MHz $149 

For Wang, AT&T, DeskPro, NEC, Leading Edge 

80287-3 5 MHz $179 

For the IBM PC AT and 286 compatibles 

80287-6 6 MHz $229 

For 8 MHz AT compatibles 

80287-8 8 MHz $259 

For the 8 MHz 80286 accelerator cards 

80287-1010 MHz $395 

For the Compaq 386 

Call for prices on V20, V30, 

64K, 128K and 256K RAM 

287TURBO-PLUS™ 

Speeds up your AT 

Adjustable 80286 Clock 6-12 MHz 
10 MHz 80287 Clock 

Plus Full Hardware Reset. $149 

Optional 80286-10 


287TURBO-PLUS 

With 80287 10 MHz. 
With 80287 12 MHz. 


CALL (617) 746-7341 FOR OUR COMPLETE CATALOG 


p ° Box79 

V ^✓Kingston, Mass. 
If^- - 02364 USA 

The World Leader 

VS)/ (617)746-7341 

in 8087 Support! 


MicroWay Europe 
32 High Street 
Kingston-Upon-Thames 
Surrey England KT1 1 HL 
Telephone: 01-541-5466 







































PC XT /AT ADDON BOARDS 

MS DOS/QW Basic 3.2.$80 

XT Mother Board/Bios.$83 

XT Turbo Board/Bios.$103 

Monochrome/Qraphic/Printer Card . . . $66 

Monochrome Graphic Card.$60 

Color Qraphic/Prlnter Card.$60 

Color Graphic Card.$50 

XT Multi I/O Card.$73 

XT I/O Plus II.$45 

Floppy Disk Controller 

1 port.$25 

2 port.$33 

RS232 Interface Card 

1 port.$22 

2 port.$27 

Parallel Printer Card.$19 

Clock Card.$25 

Game Card.$18 

Hard Disk Controller Card.$100 

Hard Disk/Floppy Disk Controller Card $123 

XT 2 MB RAM Card.$195 

AT Mother Board/Bios.$490 

AT 3 MB Multifunction Card.$178 

AT 4 MB RAM Card.$210 

AT 1.2M Floppy Disk Card.$72 

EGA Card.$245 

AT HDC/FDC Controller w/Cable.$215 


KEYBOARDS 

• 5151 Style AT/XT Keyboard.$68 

• 747 AT Style AT/XT Keyboard.$53 


POWER SUPPLY 

150 Watt XT Power Supply.$53 

200 Watt AT Power Supply.$85 


MONITORS 

« PARCO (Sony) 

Height Resolution 
12 "90° Monitor 800 
x 700 Lines With 
(Ion-Glare 
Screen/Swivels 
Base Amber. $115 

• SAMSUNG - Amber.$79 

• TAXAN 620 Color.$375 

• TAXAN 630 Super Hi-Res. Color.$445 

• TAXAN 640 Super Hi-Res. Color.$495 

• TAXAN 760 EGA Monitor.$499 

PRINTERS 

• RITEMAN PLUS (120 cps. 80 col.).$175 

• RITEMAN -15 (160 cps. 136 col.).$345 

• BROTHER M1509 (180 cps. 136 col.) . . . $395 

DRIVES 

• TEAC 360K Floppy Drive.$90 

• FUJISU 360K Floppy Drive.$82 

• CHINON 360K Floppy Drive.$85 

• 20MB Hard Dlsk/WD.$Call 

• 30MB Hard Dlsk/WD.$Call 

• 1.2MB TEAC AT Drive.$135 

CHASSIS 

• Flip Top XT Case.$29 

• Slide Off XT Case.$36 

• AT Jr. Style XT Case.$37 

• AT Case.$85 

All Cases Include Speaker/Hardware 
MODEMS 

• Internal Modem-Everex.$137 

Select 300/1200 bps, powerful BltCom 
Communication Software Included. Auto 
answer/dial. 

• External Modem-Smarteam.$160 


PC/AT 2000 SYSTEM 


• 80286 Processor (6/8MHZ) 

• 1024K RAM 

• 1.2MB Floppy Disk Drive 

• AT Hard Disk/Floppy Disk Controller Card 

• Clock/Calendar with Batter Backup 

• AT Style Keyboard 

• 200W Power Supply /Case 

• Runs All Major Software 

• Six Month Warranty 

$1249 

PC/XT 2000 SYSTEM 


• 640K RAM 

• 360K Half Height Floppy Drive 
w/Controller 

• AT Style Keyboard 

• 150W Power Supply 

• Slide Off Case 

• Runs All Major Software 

• Six Month Warranty 

$495 


(201) 944-5002 
2142 Pi. Hudson St. 
Fort Lee, NJ 07024 

IBM PC, IBM XT and IBM AT are trademarks 
OP IBM corpration. 

MS-DOS Is a trademark of Microsoft 
Corporation. 

Prices Subject to Change without notice. 


ORDER TOLL FREE: 

1-800-367 1132 

MONDAY - SATURDAY 9AM - 6PM EST. 


SUNNYTECH INC 


Customer Service 
(201) 944-5010 
9AM - 5PM EST. M-F 


ORDERS SHIPPED UPS COD 
WITHIN 24 HRS. 


CIRCLE NO. 184 ON READER SERVICE CARD 




* 

* 

* 

¥ 

¥ 

¥ 

¥ 

¥ 

¥ 

¥ 


Turbo Screen/Application Generator 

Be 3-6 times more Productive!!! 


Guaranteed* For$69 95 


(one month holiday special) 


Turbo Master helps you develop your functional specs (Generates Screen, File, Isam, Variable and Menu Control Documentation) and 
then allows you to “Quickly” prototype a validation model of your system. (Which can be incorporated as part of your functional 
specifications.) Turbo Master can then generate a super-fast Turbo Pascal Program that features advanced screen input and control, a 
professional control menu, the database functions of (1) Add/Edit/Delete Records (2) Search Database by any Key (3) Database 
Recovery programs (4) Screen/Printer Report for each of the keys. Each Key can have up to 6 fields. 


Our Users Report 

• "Since Fallot 85,1 have generated over 300 program modules with it and find it to be just what I needed. 
Most all of the modules represent 5000 to 8000 lines of Pascal Code" Oner Systems. 

• "By being able to produce a 21 screen and menu control demo so quickly helped me obtain the contract." 

• "Speeded up my screen development by 6 times" Elexor Associates. 

• "Has many of the features of the Super Mini development tools costing $10.000." Applied Micro Systems. 

• "Saved months from having to recode portions of our system." Real Green Inc. 

• "We developed 3 Vertical Market Applications in the 6 months we had your system." Absolute Systems. 


# TDIAI I ry the demo package included for 30 days 

RISK FREEl TRIAL If not pleased return for a full refund 

Receive 6 Floppy Disks and a manual containing: 

1. Screen Palnter/Edltor & Generator • Paint menu screens using keyboard • Has variable dictionary to 
provide consistant edits • Date entry masks • Date & range checks • Field and/or global help screens 
• Box & line drawing • Error & message handler 

2. Help Screen Maker - Different help screen for each field. 

3. Menu Editor & Generator • Allows selection by 4 methods. 

4. Database Program Generator • Produces "Easy to Read" code that can be easily modified by 
experienced developers. 

5. Resident Isam Module - compatible with Turbo Toolbox, but saves 8K of codespace and 10K of 
dataspace. 

6. Turbo Resident Screen Capture Utility which allows you to capture Text Screens from any running program. 


Btrieve Interface Module 

Allows full multiuser record locking and 
Automatic file recovery for the industry’s 
most popular LANs. Works with the in¬ 
dustry’s leader of professional 
databases for multiuser LANs. 

Requires Btrieve by SoftCraft Inc. $99.95 


□ Turbo Master by 

Hawaiian Village Software . . $69.95 

□ Btrieve Interface by 

Innovative Interfaces 99.95 

□ Turbo Pascal by 

Borland International $99 95 

For Further Information Call: 

(305) 892-5686 


& Much, Much More 

Credit Card & C.O.D. Orders Call: 1-800-821-9503 on ,W»"'» 
In Florida 1-800-342-0137 


Add 7.50 shipping to all U.S Cities All foreign 
orders add 15.00 per producl ordered 
CIRCLE NO. 132 ON READER SERVICE CARD 
Btrieve is a trademark of SoftCraft Inc. Turbo Pascal & 

Turbo Database Toolbox ar^ trademarks of Borland 
International 


*********************** 


*************** 


4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

* 

* 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

* 
























































Today’s 386 compatibles 
fall into two categories: 


The PC Designs GV-386 is not an enhance¬ 
ment. It’s the fastest 80386-based compatible 
you can buy. 

That’s because the engineers here at PC Designs 
realized early on that to take full advantage of the 
80386 chip, an equally revolutionary motherboard 
was needed. 

So they started with a blank piece of paper and— 
from the ground up—designed a 80386 micro that 
blows the doors off every other compatible available. 

Get Power Hungry 

At the heart of the GV-386 is a 32-bit processor 
operating at 16MHz clock speed; keyboard switchable 
to 8MHz (it will even support 24MHz operation, once 
Intel makes that available). 

And that’s Zero Wait State clock speed, thanks to a 
specially-designed, high-speed memory cache circuit. 
When enabled, this unique circuit—with a full 64K of 
static RAM—allows you virtually instant data 
retrieval 80 percent of the time. 

The cache circuit—a PC Designs exclusive—also 
ensures rock-solid reliability because it eases the load 
high speed puts on the integrated circuits. Even at 
zero wait state, the GV-386 never exceeds IC design 
specifications. 


Those that “enhance” technology. 


And those that blow it away. 



Radical, but compatible 

Despite its radical innovations, the GV-386 was 
designed to retain the standard 8MHz IBM PC-AT 
bus timing. The result is unparalleled compatibility 
with existing software and hardware. 

And every GV-386 is bundled with Desqview 1.3 
from Quarterdeck Office Systems, giving you both 
expanded memory management and multitasking 
capabilities allowing up to nine simultaneous opera¬ 
tions. 

Affordable power 

If all this speed and performance doesn’t blow you 
away, take a look at the price: The standard system 
starts at around $4000. And it’s available now. 

The fact is, it’s the most innovative compatible 
to date. So why settle for an 80386 machine that 
just “advances” technology, when the GV-386 
blows it away? 


PC 




2500 N. Hemlock Circle 
Broken Arrow, OK 74012 


19 Rector St., Suite 2705 
New York, NY 10006 


Call us now in New York: 1-212-514-7280 or in Tulsa: 1-918-251-5550 


CIRCLE NO. 159 ON READER SERVICE CARD 




GET 1 YEAR ON SITE SERVICE FREE 


B.E.S.T. 286 AT m Compatible 

640 KB RAM Bare Bone System: 

only WWW (Qty 




7 * 


■EH 

H 


! >., J 






Evaluation Unit $1,095 
We Welcome VAR and Dealer Inquiry 
(quantity discounts available) 

All major credit cards accepted 


1024 KB on Mother Board 

• 200 WATT U.L. Approved Power Supply 

• AT case with Lock and LED indicators 

• 5060 Compatible Keyboard 

• MS DOS 3.1 (*85 value FREE) 

• Full Documentation ( 

• Complete technical support 

• Fully compatible with IBM-AT 

SYSTEM CONFIGURATION B: 

• AT 640 KB RAM Bare Bone System 

• 1.2 MB Teac Floppy Disk Drive 

• 30 MB Hard Disk (39MS) 

• Western Digital WA-2 Floppy & Hard Disk Controller 

• 1 Year Nationwide (50 States) ON-SITE Service 

(Includes Parts & Labor) £ p 

• MS DOS 3.1 nnli/V I MMh 


.is“sr s o;'i y $i ^95 m m 

GET OUT OF THE LOOP! 

NO MORE RETURNS OR LONG WAITS FOR REPAIRS 
WE WILL FIX YOUR COMPUTER ON SITE 
FREE OF CHARGE FOR 1 YEAR 

Business Engineering Scientific Technologies 

1914 W. Farwell • Chicago, IL 60626 
(312) 465-8886 or (312) 262-3480 

Prices subject to change without notice 
IBM AT is a trademark of International Business Machines Corporation 


Turbo 286 - AT Compatible $1295 


• 8 expansion slots 

• 200 Watt Power Supply 

MEDICAL & DENTAL 

• Billing & Posting 

• Faster Collection 

• Improved Cash Flow 

• Easy Insurance Procedure 

• Appointment Scheduling 

• Management Reports 

LEGALSOFTWARE 

• Real-Time, Multi-User y 

• Time & Billing ^ 

• Client/Matter Reports # p 

• Aged A/R Report # kj 


• 640 K RAM 

• 6/8 MHZ Switchable 
from keyboard 

• 2 Floppy & Hard Disk 
Controller 

• 1.2 MB Floppy Disk 
Drive 

• Serial, Parallel Ports 

• Color Graphics Card 

• AT keyboard 


VIDEO STORE 
MANAGEMENT 

Full Rental Tracking 
Membership Control 


• Matter Account Inquire • Employee Code System 


• Transaction Entry & 
Editing 

CONSTRUCTION 

• Fully Integrated 
Construction 
Accounting System 

• Job Costing 

• Accounts Payable 

• General Ledger 

• Payroll 

• Accounts Receivable 

• And much much more 


• High/Low Rental Report 

• Overdue Tape Report 

POINT OF SALE 

• For all Retail & 
Wholesale Businesses 

• Cash Drawer & Bar 
Code Scanner Interface 

• Complete Audit Trail of 
all P.O.S. Transactions 

• Inventory Inquiry during 
sale, and much more... 



E 


Editor's Choice: 
"Proteus 286: the 
great performer" 
Editor , Business 
Computer Digest 


PROTEUS-286GT includes: 

80286-10 Intel CPU running at 12.5 

1MB RAM expandable to 4MB on mainbd 

8-layer stable motherboard 

8 1/0 slots, keybd select speed 

3 serials, 2 Parallels on mainbd 

Clock/cal, battery backup 

Hard Disk & Floppy Controller 

5 Mhz DMA bus 

200 Watts quality Power Supply 

Two Floppy Drives (1, 1.2MB, 1, 360K) 

High Quality AT keyboards 
Well Written Manuals & Utilities 
12.6/6Mhz system price $2495 
10/6Mhz system price $2195 
10/6Mhz zero wait system $2395 
12.5Mhz, 40Megabyte EGA system $3695 

To order or for information: Call 
PROTEUS TECHNOLOGY CORP. 
377 Route 17, Airport 17 Center 
Hasbrouck Heights, New Jersey 
07604 


NO OTHER CLONE MATCHES PROTEUS 
IN IBM COMPATIBILITY, SPEED, 
RELIABILITY, SUPPORT & DELIVERY 


Proteus Features Include: 

• 12.5 Mhz Clock Speed upto 4MB Ram on motherboard. 

• 8-layer stable motherboard, 3 Serials, 2 Parallels on mainbd 
• Made in USA, 100% compatible with Autocad, Novell, Zenix 
• 30-day money back guarantee. Total satisfaction guaranteed 
• Free nationwide onsite maintenance, 15-month Full Warranty 
• 24-hour online Tech support 


ADD-ONS 

Hard Disks: 

20MB Seagate $285 

30MB Seagate $530 

40MB Seagate $695 

80MB Seagate $1095 

Monitors: 

Monochrome $109 

Color monitor $295 

NEC EGA monit. $585 

Various EGA, CGA, & Monochrome cards available, 
call. 


201-288-8269 
Telex 510 601 0960 
Fax 288 1059 


CIRCLE NO. 183 ON READER SERVICE CARD 














Programmer’s Paradise Gives You Superb Selection, 
Personal Service and Unbeatable Prices! 

Welcome to Paradise. The MS/PC-DOS and XENIX software source that caters to your programming needs. 

Discover the Many Advantages of Paradise... 

• Lowest price guaranteed • Huge inventory, immediate shipment • Special orders 

• Latest versions _ • Knowledgeable sales staff • 30 -day money-back guarantee 


We’ll Match Any Nationally Advertised Price. 


LIST OURS 

MAKE. LINT. PROFILE, UTILITIES 
C CROSS REFERENCE GENERATOR 50 35 

LMK 195 135 

POLYMAKE 99 78 

OTHER POLYTRON CALL CALL 

PMAKER 125 89 

PFINISH 395 235 

THE PROFILER 125 94 

PC LINT 139 105 

PRE-C 295 159 

TEXT MANAGEMENT UTILITIES 120 85 


C+ + 

LIST OURS 

ADVANTAGE C+ + 

$ 495 

469 

PF0RCE++ 

395 CALL 

C COMPILERS 

C-86 PLUS 

497 

445 

DATALIGHT -C 

60 

49 

DATALIGHT - C DEVELOPER’S KIT 99 

i9 

LATTICE C 3.2 

500 

269 

LATTIC C W/SOURCE 

900 

545 

LET’S C 

75 

59 

W/CSD DEBUGGER 

150 

109 

MICROSOFT C 4.0 

450 

275 

MARK WILLIAMS C 

495 

289 

SUPERSOFT C 

395 

339 

WIZARD C 

450 

369 

C INTERPRETERS 

C-TERP 

300 

235 

INSTANT C 

500 

379 

INTRODUCING C 

125 

105 

RUN/C 

150 

89 

RUN/C PROFESSIONAL 1.1 

250 

169 

ASSEMBLERS, LINKERS 

3861ASM/LINK 

495 

445 

ADVANTAGE LINK 

395 

349 

MACRO-86 

150 

98 

PASM-86 

195 

125 

PLINK 86 PLUS 

495 

325 

QUELO 68000 X-ASM 

595 

509 


C UTILITY LIBRARIES 
ASYNC MANAGER 175 135 

BASIC C 175 129 

C ESSENTIALS 100 85 

C FOOD SMORGASBORD 150 95 

W/SOURCE 300 188 

C TOOLS PLUS 175 135 

ESSENTIAL C UTILITY LIBRARY 185 135 

ESSENTIAL COMMUNICATIONS 185 135 

W/BREAKOUT DEBUGGER 250 195 

GREENLEAF FUNCTIONS 185 135 

GREENLEAF COMM 185 135 

THE HAMMER 195 175 

MULTI C 149 135 

MULTI COMM 149 135 

PFORCE 395 245 

TIMESLICER 295 265 

W/LIBRARY SOURCE 


TOPVIEW TOOLBASKET 

250 

189 

SCREEN DISPLAY, WINDOWS FOR C 


C WORTHY 

295 

269 

CURSES 

125 

85 

W/SOURCE 

250 

184 

GREENLEAF DATA WINDOWS 

225 

179 

W/SOURCE 

395 

339 

FLASH UP WINDOWS 

75 

68 

MICROSOFT WINDOWS 



DEVELOPMENT SYSTEM 

500 

319 

ON-LINE HELP 

149 

109 

PANEL 

295 

219 


DEBUGGERS 

ADVANCED TRACE 86 175 129 

BREAKOUT 125 99 

CODESMITH 86 145 105 

C SPRITE 175 125 

CSD SOURCE DEBUGGER 75 59 

PERISCOPE 13.0 345 293 

PERISCOPE II 3.0 175 145 

PERISCOPE II-X 3.0 145 109 

PFIX 86 PLUS 395 235 

XVIEW86 60 49 


Lattice Specials 


C COMPILER 

500 

269 

C CROSS REFERENCE GENERATOR 50 

35 

C FOOD SMORGASBORD 

150 

95 

C-SPRITE 

175 

125 

CURSES 

125 

85 

DBC-III 

250 

175 

LMK 

195 

135 

RPGII COMPILER 

750 

635 

RPG COMBINATION PACK 

1100 

939 

SECRET DISK 

120 

85 

SIDETALK 

120 

85 

TEXT MANAGEMENT UTILITIES 

120 

85 

GRAPHICS 



ADVANTAGE GRAPHICS 

295 

225 

ESSENTIAL GRAPHICS 

250 

195 

GRAPHIC 

350 

289 

GSS GRAPHICS DEVELOPMENT 



TOOLKIT 

495 

379 

GSS KERNEL SYSTEM 

495 

379 

GSS METAFILE INTERPRETER 

295 

239 

GSS PLOTTING SYSTEM 

495 

379 

HALO—ONE LANGUAGE 

300 

209 

W/TEN FONT PACK 

425 

297 

HALO—FIVE MICROSOFT 



LANGUAGES 

595 

415 

METAWINDOWS 

185 

115 

METAWINDOWS PLUS 

235 

189 

METAFONTS 

80 

59 

METAFONTS PLUS 

235 

189 


POLYWINDOWS 
SCREENPLAY (LATTICE) 
SOFTSCREEN HELP 
VIEW MANAGER 
VITAMIN C 3.0 
VC SCREEN 
WINDOWS FOR C 
WINDOWS FOR DATA 
ZVIEW 

FILE MANAGEMENT 

BTRIEVE 

XTRIEVE 

W/REPORT GENERATION 
BTRIEVE/N 
XTRIEVE/N 

W/REPORT GENERATION 
CTREE 
RTREE 

CTREE/RTREE BUNDLE 

CQL 

DBC III 

W/SOURCE 
DBC III PLUS 
DB VISTA 

W/SOURCE 
DB QUERY 
W/SOURCE 
FABS 

FABS PLUS 
INFORMIX 
INFORMIX 4GL 
INFORMIX SQL 
PHACT 


CALL CALL 
150 135 


195 

275 

225 

99 

195 

295 

245 


245 

245 

390 

595 

595 

940 

395 

295 

650 

395 

250 

500 

750 

195 

495 


175 

199 

199 

84 

145 

239 

189 


195 

195 

315 

465 

465 

750 

329 

249 

529 

329 

175 

379 

599 

155 

425 


March BUNDLE 
of the Month 

RUN/C Pro- Best-selling C interpreter PLUS 
Greenleaf Functions or C Utility Library. 
Convenience disk included—One command loads 
library! 

LIST TOGETHER $435 OURS $289 


EDITORS 

BRIEF 

CVUE 

W/SOURCE 
EDIX 
EMACS 
EPSILON 
FIRSTIME (C) 
KEDIT 
I SF 
PMATE 
PC/VI 
SPF/PC 
VEDIT 
VEDITPLUS 


195 CALL 
75 59 


250 

195 

295 

195 

295 

125 

125 

195 

149 
195 

150 
185 


ADDITIONAL PRODUCTS 
DAN BRICKLIN’S DEMO PROGRAM 75 
FASTBACK 175 

INTERACTIVE EASYFLOW 150 

PDISK 195 

SOURCE PRINT 97 


195 

155 

265 

159 

229 

105 

89 

119 

129 

149 

109 

139 


59 

149 

129 

129 

87 



LIST OURS 

TOOLS FOR TURBO PASCAL 

ALICE 

95 

68 

FIRSTIME 

75 

59 

FLASH UP WINDOWS 

90 

79 

TURBO HALO 

129 

99 

SCREENPLAY 

100 

89 

SCREENSCULPTOR 

125 

94 

T-DEBUG PLUS 

60 

50 

TURBO EXTENDER 

85 

65 

TURBO PASCAL ASYNC MGR 

100 

84 

TURBO PROFESSIONAL 

70 

49 

TURBO POWER TOOLS PLUS 

100 

83 

TURBO WINDOWS 

80 

65 

OTHER TURBO TOOLS 

CALL CALL 


NEW Products 

ADVANTAGE C + + for XENIX-Take 
advantage of object-oriented programming 
methods. Add resiliency and flexibility to your code. 
Build large and sophisticated programs more 
productively. 

List $695 Ours $660 

ADVANTAGE Make—Feature-packed 
MS/PC-DOS version of UNIX MAKE utility. 

List $125 Ours $99 

SSP/PC—Fast, extremely accurate library of over 
145 math subroutines. Callable from C, FORTRAN, 
Pascal, BASIC. 

List $350 Ours CALL 

TIMESLICER—New Microsoft version. 
Multitasking, linkable library supporting concurrent 
tasks and real-time event processing with header 
files provided for C+ +, C and assembly. Library 
source available! 

List $295 Ours $265 

VENTURA PUBLISHER (XEROX)—Desktop 
publishing software, lightning fast, loaded with 
features. Create professional-looking docu¬ 
mentation at minimal cost! 

List $895 Ours $805 


BASIC 


BETTERBASIC 

199 

139 

SUMMIT ADD ONS 

CALL CALL 

BETTER TOOLS 

95 

89 

FINALLY 

99 

89 

MICROSOFT QUICKBASIC 

99 

75 

PROFESSIONAL BASIC 

99 

75 

8087 MATH SUPPORT 

50 

45 

PANEL-BASIC 

145 

115 

TRUE BASIC 

150 

105 

ADD ONS 

CALL CALL 

COBOL COMPILERS/UTILITIES 


MICROSOFT COBOL 

700 

445 

MICROSOFT COBOL TOOLS 

350 

205 

MICROSOFT SORT 

195 

139 

MICRO/SPF 

175 CALL 

OPT-TECH SORT 

149 

115 

REALIA COBOL 

995 

785 

SCREENPLAY 

175 

155 

RM/COBOL 

950 

639 

RM/COBOL 8X 

1250 

895 

VISUAL COBOL (MBP) 

1150 

1015 

FORTRAN COMPILERS/UTILITIES 


LAHEY FORTRAN 

477 CALL 

MICROSOFT FORTRAN 

350 

209 

RM/FORTRAN 

595 

389 

ACS TIMES SERIES 

495 

419 

87SFL 

250 

225 

FOR-WINDS 

90 

78 

FORLIB-PLUS 

70 

54 

GRAFMATICS OR PLOTMATICS 

135 

119 

GRAFMATICS AND PLOTMATICS 

240 

219 

FORTRAN SCIENTIFIC 



SUBROUTINES 

295 

249 

STRINGS AND THINGS 

70 

54 

XENIX/UNIX SOFTWARE 


XENIX SYSTEM V (COMPLETE 



SYSTEM)-SCO 

1295 

995 

SYSTEM V/AT—MICROPORT 

440 

395 

OTHER SCO AND 



MICROPORT 

CALL CALL 

ADVANTAGE C+ + 

695 

660 

BTRIEVE 

595 

465 

C-ISAM 

319 

285 

CTREE 

395 

329 

MICROSOFT BASIC 

350 

239 

MICROSOFT COBOL 

995 

635 

MICROSOFT COBOL TOOLS 

450 

205 

MICROSOFT FORTRAN 

695 

439 

MICROSOFT PASCAL 

695 

439 

PANEL 

625 

545 

RM/COBOL 

1250 

949 

RM/FORTRAN 

750 

549 


195 

155 

TREE DIAGRAMMER 

77 

69 

ADDITIONAL LANGUAGES 



495 

425 

VENTURA PUBLISHER (XEROX) 

895 

805 

APL PLUS 

595 

429 

150 

129 




JANUS ADA/C PACK 

95 

89 

195 

169 

PASCAL COMPILERS 



LOGITECH MODULA 2 

89 

63 

795 

639 

MICROSOFT PASCAL 

300 

189 

PC/FORTH 

150 

119 

995 

799 

PASCAL 2 

350 

329 

SMALLTALK V 

99 

88 

795 

639 

TURBO PASCAL 

100 

69 

TURBO PROLOG 

100 

75 


OTHER BORLAND 


CALL FOR OTHERS/ADD-ONS! 


Terms and Policies 

• We honor MC, VISA, AMERICAN EXPRESS 

No surcharge on credit card or C.O.D. Prepayment by check. New York State residents add applicable 
sales tax. Shipping and handling $3.00 per item, sent UPS ground. Rush service available, prevailing rates. 

• Programmer’s Paradise will match any current nationally advertised price for the products listed in this ad. 

• Mention this ad when ordering—some items are specially priced. 

• Prices and Policies subject to change without notice. 

• Corporate and Dealer inquiries welcome. 

1-800-445-7899 In NY: 914-332-4548 


Programmer’s Paradise 

42 River Street, Tarrytown, NY 10591 
914-332-4548 


Programmer’s 

WSSJM 



CIRCLE NO. 143 ON READER SERVICE CARD 





























TOOLS ! 

for Professional Programmers 


asmTREE™ 

Database Development System 


A database system is the heart of just about every 
successful! software package ! Accounting systems, 
Mailing programs, Analysis software, plus many other 
types of packages have reaped the benefits of a database. 

NOW you too can utilize a sophisticated B+Tree 
database for your programming needs. Whether you 
program in Assembler, C, PASCAL, or FORTRAN, you can 
have all the advanced capabilities of asmTREE at your 
finger tips. asmTREE is written in assembly language for 
fast execution and small code size - for the DOS 2.xx or 
newer environment. 

ISAM Functions • NO ROYALTIES - Full SOURCE CODE 
asmTREE™ - The Programmer’s Database 
Only $395.00 - Complete 

Other fine development tools - 

•ASMLIB - The Programmer’s Library - over 210 functions for Assembler, C, 

PASCAL, and FORTRAN. NO ROYALTIES. With SOURCE CODE .. $149 

•FPLIB * IEEE FLoating Point for REALIA ,V COBOL .$149 

•Turbo.ASM - Assembly Langauge interfacing made easy for TURBO PASCAL ... 
$99.95 

CALL TOLL FREE 1-800-262-8010 

in Calif. CALL 1-714-526-5151 


BC Associates 

3261 N. Harbor Blvd - Suite B 
Fullerton, CA 92635 


CANADA'S SOURCE 
FORC 


Compilers • Utilities & Aids • Editors 
Interpreters • De-Bugging Tools 
File Access Systems • Graphics 


GREENLEAF 
SOFTWARE 0 




<^> 


Lattice 



LIFEBOAT 


Complete Line of Programming Development Tools 
Full Service and Support - Fast Delivery 

CORPORATE DISCOUNTS 


(416) 449-9252/5 

SCANTEL SYSTEMS LTD. 

801 YORK MILLS RD., 201, DON MILLS, ONT M3B 1X7 


MEGAMEMORY AND 
DESKTOP PUBLISHING 


Lowest Prices In USA 

Fully Populated 2MB Boards 
Made by Tall Tree Systems 

HIGHEST QUALITY RAM CHIPS 

JRAM-2.$319 

JRAM-3 LOTUS-INTEL.$389 

JRAM-AT.$389 

JRAM-AT3 LOTUS-INTEL.$429 

JLaser-Plus PC.$599 


SUPER SPECIAL 


OMS KISS Laser Printer 
W/TWO MEGABYTE JRAM-3 
and JLASER-PLUS.... $2499 
600x300 Dots Per Inch! 


EVSAN COMPANY 

P.O.BOX 2143 DALY CITY, CA 94017 


(415) 991-1051 




THE RAM EXPLOSION 

5119A Leesburg Pike, Suite 260 
Falls Church, VA 22041 

(703) 569-4471 

Dealer Inquiries Invited 
VISA/MASTERCARD AMEX 
An Authorized TALL TREE DEALER 


MEC 

41256 

41256 

41256 

4164 

4164 

4464 

4464 

4116 


DYNAMIC RAMS 

100ns 
100ns 
150ns 
120ns 
120ns 
150ns 
120ns 
150ns 
150ns 


65.00 

4.75 

2.75 
3.10 
1.20 
1.00 
4.25 
3.95 

.98 


V-20 

V-20 

V-30 


27512 

27256 

27C256 

27C256 

27128 

27128 

2764 

2764 

27C64 

2732A 

2732A 

2564 

2532 

2716-1 

2716 

2708 


8mhz 

5mhz 

8mhz 

EPROMS 

250ns 

250ns 

200ns 

250ns 

150ns 

250ns 

200ns 

250ns 

200ns 

200ns 

250ns 

450ns 

450ns 

350ns 

450ns 

450ns 

8 0 0 O' s 


9.95 

8.95 

11.00 


18.75 

5.50 

7.10 

6.75 

5.75 
3.60 

3.75 
3.20 

4.90 

3.90 

3.50 

7.50 

4.10 
3.70 
2.95 

2.50 


8031 AH 

8035 

80C35 

8039 

80C39 

8085A 

80C85 

8086 

8155 

8156 
8212 
8216 
8226 
8237A-5 


5.25 
1.95 

3.75 

2.50 
4.00 

1.75 

3.75 
5.00 
1.60 

2.25 
1.60 

1.50 

1.75 

4.75 


B243 

8250A 

8251A 

8253-5 

8254 

8255A-5 

8272 

8274 

8284 

8288 

8748H 

8749H 


2.95 

5.25 

6.25 

8.25 


PRIME PARTS 
100% GUARANTEED 


MATH CO-PROCESSORS 

C8087- 2 8mhz 142.00 

C80287-6 6mhz 168.00 

C80287-8 8mhz 275.00 


STATIC RAMS 


43256L 

6264L 

6264L 

6264L 

6264P 

6116P 

201 SB 

4016 

4016 

2114A 

6147 


120ns 

100ns 

120ns 

150ns 

150ns 

150ns 

100ns 

150ns 

200ns 

120ns 

35ns 


25.50 

3.95 

3.60 
2.85 
2.65 
1.45 
1.75 

1.60 
1.30 
1.50 
3.25 


COLOR GRAPHIC CONTROLLER : 

D7220AD 18.50 

MOTHERBOARDS 

XT Motherboard $ 149.00 

XT TURBO BOARD 210.00 

AT Motherboard 999.00 

IBM COMPATIBLE 
INTERFACE CARDS 

Floppy Disk Drive Adaptor $ 45.00 

Color Graphic Adaptor 80.00 

Monographic Card 99.00 

Multifunction Cards 95.00 

FLOPPY DISK DRIVES 

TEAC 51" FD55B 94.00 

FUJITSU 5V M2551 82.00 

DIGITAL REAL TIME CLOCK 


Z80A CPU 
Z80A CTC 
Z80A PI0 
Z80A DART 

STATIC RAMS 


4mhz 

4mhz 

4mhz 

4mhz 


PROMPT DELIVERY 


TERMS & CONDITIONS : 

1) Visa & Mastercards Accepted with 
3% surcharge. 

2) Prices subject to change. PLease call 
for current & volume pricing. 

3) Shipping & Handling (1 lb) 

UPS Surface S3.00 

UPS 2nd Day $4.50 

California Residents add 6.5% sales 

tax. 


OFFICE HOURS : 

Monday thru Friday 7:30AM - 5:30PM 

Saturday 7:30AM -12:00Noon 

Data Sheets : $0.25 each 

Quarterly Flyers available , please call 
We reserve the right to substitute 
manufacturer. All merchandise subject 


194 


CIRCLE NO. 171 ON READER SERVICE CARD 


CIRCLE NO. 112 ON READER SERVICE CARD 


PC TECH JOURNAL 





























































ITS TEK-NET-BBS (703) 690-7462 


“Serving the Nation’s Capitol 
and the World ” 

Drives 


20 MB SEAGATE 65MS $379 
30 MB SEAGATE RLL $479 
20 MB ST4026 AT $573 

30 MB ST4038 AT $651 

40 MB ST4051 AT $792 

80 MB ST4096 AT $1273 

40 MB PRIAM XT $1395 

60 MB PRIAM XT $1450 

40 MB PRIAM AT $1175 

60 MB PRIAM AT $1350 

BERNOULLI DUAL 10 $1839 

BERNOULLI DUAL 20 $2494 

20MB PLUS HARDCARD $695 
20MB MAYNARD HCARD $759 
ISI WORM 220MB INT. $2995 
60MB ARCHIVE TAPE $740 
60MB ARCH. EXT. TAPE $740 
60MB GENOA TAPE $935 
60MB SYSGEN $1089 

TOSHIBA 3.5 DRIVE $150 
•TOSHIBA 5.25 EXT. $349 
FUJITSU 360 K DRIVE $89 


Laser Printers 


CANON A1 
CANON A2 
HP LASERJET 
QMS KISS 
XEROX 4045 


$2095 

$3085 

$2295 

$1995 

$CALL 


Open 7 days a week 
(703) 847-4740 (800) 642-2395 

Information and Technology Services, Inc. 

Micro Systems Specialists 
8478A Tyco Rd., Vienna, VA 22180 
Printers Memory Boards 


NEC P-6 
NEC P-7 
NEC P-5 
NEC P-5XL 
PANASONIC 1080 I 
PANASONIC 1091 I 
PANASONIC 1092 
PANASONIC 1592 
STAR LV 1210 
STAR NX-15 
STAR ND-15 £ 

STAR NR-15 
STAR NB 24-15 
STAR SD-10 
STAR NX-10 
BROTHER 1509 
CITIZEN MSP-10 
CITIZEN MSP-15 
CITIZEN PREMIER 35 
TOSHIBA P341 
TOSHIBA P351 
FUJITSU DLP24 
FUJITSU DM91 
OKIDATA M182 
OKIDATA M192 + 
OKIDATA M193 + 
OKIDATA M84 
OKIDATA 2410 
EPSON FX-286 
EPSON LX-80 
EPSON FX-85 
EPSON LQ-800 


$465 

$670 

$1107 

$1230 

$220 

$284 

$345 

$465 

$174 

$368 

$430 

$522 

$684 

$340 

$240 

$425 

$305 

$420 

$470 

$820 

$1212 

$1224 

$398 

$264 

$397 

$598 

$698 

$1961 

$609 

$270 

$419 

$616 


JRAM 2 $129 

JRAM 3 ABOVEBOARD $179 

JRAM AT $179 

JRAM AT3 ABOVEBOARD $239 

JLASER MODULE $265 

JLASER + AVAIL. 

INTEL ABOVEBOARD $438 

AST RAMPAGE 512K $485 

ORCHD CRAMRAM $291 

ZUCKER BOARD $68 

AST 6 PAK + W/384 $210 

QUADBOARD W/384 $199 

Chips 


64K 150ns set of 9 
64K 120ns set of 9 
256K/150ns set of 9 
256K/120ns set of 9 
64 x 4 

128K Piggyback 
8087-3 
8087-8 
80287 6MHz 
80287 8MHz 



PANASONIC 
BUSINESS 
PARTNER 


FX-600 2DS/DD, 640K 

$895 

with 1 DS/DD, 20 MB 

$1145 

(Monitor and Adapter extra) 


PRICING SENSATIONS! 

20 MB SEAGATE DRIVE $379 

30 MB SEAGATE DRIVE $479 

SAMSUNG AMBER MONITOR $79 

NEW ENHANCED KEYBOARD $79 

MONO GRAPHICS CARD $90 

OTHER SYSTEMS 


BIOS AT 8Mhz 

$1769 

SPERRY MICRO IT 

$1795 

IBM XT 

$1195 

IBM AT 

$2395 

1800+ AT (EVEREX) 

$1195 


LAPTOPS and ACCESSORIES 


Toshiba T1100 w/640 

$1745 

Toshiba 3800 

$3395 

Sharp PC 7000 

$995 

NEC Multispeed 

CALL 

Zenith 181 

CALL 

Panasonic Exec. Partner 

CALL 

Centronics GLP II Printer 

$215 

Toshiba Ext Drive 

$349 

Toshiba 1200 Modem 

$336 



* Prices subject to change 
1/16/87 

* 10% re-stock fee on all 
items 

* Software non-returnable 
if opened 

► No surcharge on VISA, 
MC, CHOICE... AE 3% 



Visa, MC, CHOICE, AE 
Leasing, Renting & 
Financing available 


$8 

$9 

$23 

$25 

$4 

$5 

$119 

$169 

$192 

$306 


|,! ’'• 7*7 N 


IBM® PC Compatible 


“Editor’s Choice” 
PC MAGAZINE 
OCT. 14,1986 
The ITS Turbo XT 
from Information and 
Technology Services 
is our “best buy” 
recommendation 

s 849°° 

with complete 
20MB and -I 
1 floppy I 

ITS Turbo XT 

1 year warranty 
30 day money back guarantee 


ITS 

TURBO 
286 

$ 1195°° 

• Phoenix ROM BIOS 

• Full one year warranty 

• 80286 CPU switch select¬ 
able 6 or 8 Mhz (10 Mhz optional) 

• 1.2 MB Floppy Disk Drive 

• Supports up to 5 internal ’/> HT drives 

• 2 serial/I parallel ports built into chassis 

• real time clock • 8 expansion slots 
and many more features 

• 6/10 Mhz optional $1295 




ITS 

SYSTEM 386 
BLACKHAWK 




Available now 

$« 


s 3995 


Features: 

, • INTEL 80386 CPU and support 

circuits 


• Phoenix BIOS 

• 18 Mhz clock speed 

• PC/AT compatible 8 Mhz switchable 
from keyboard 

• 512K RAM standard up to 
14 megabytes 

• Parallel/Serial/Clock 

• 8 Slot Expansion bus interface 
2-PC Compatible 8 bit bus connectors 
2-32 bit bus connectors 

• Hard disk/Floppy disk controller 

• 1.2 megabyte floppy 


oo 



2,695°° 


SPERRY 

PC/IT 

Superior to the IBM AT 
Rated 8.8 by InfoWorld 

44MB, 28ms Access Hard Drive 
3 Speed Processor 
Free 8 MHz Math Coprocessor 
1.2MB Floppy, 640K Ram 
2 Serial/I Parallel Ports 
Clock/Calendar, AT Keyboard 
DOS 3.1 Basic, System Guide 
1 year warranty 


MARCH 1987 


CIRCLE NO. 134 ON READER SERVICE CARD 


195 






































































































































































TECH MARKETPLACE 

THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET 


PRODUCT CATEGORIES 


HARDWARE_198-199 

ACCESSORY CARDS.197 


COOLING DEVICES 
COMMUNICATIONS 


COMPATIBLES. 

GENERAL.198 

MASS STORAGE. 

PERIPHERALS.198-199 


SECURITY DEVICES 
USED EQUIPMENT . 


SOFTWARE 199-205 

ACCESSORIES/SUPPLIES.199 

ARTIFICIAL INTELLIGENCE.199 

BUSINESS.199 

COMMUNICATIONS.199 

DATA BASE MANAGEMENT. 

EDUCATIONAL. 

ENGINEERING.199 

EXPERT SYSTEMS.199 

GENERAL. 199-200 

GRAPHICS.200 

LANGUAGES.200 

MULTI/USER SYSTEMS. 

NETWORKING...... 


SOFTWARE continued 


OPERATING SYSTEMS.200 

PROGRAMMERS TOOLS.200-202 

PUBLIC DOMAIN.202 

SCIENTIFIC.202-203 

SECURITY DEVICES.203 

STATISTICS.; . 203 

TAXES.203 

TERMINAL EMULATION.203 

UTILITIES.203-205 

WORD PROCESSING. 


MISCELLANEOUS 205 

BAR CODING.205 

PUBLICATIONS.205 


Advertising Rates and Information: 

PC Tech Journal Marketplace 

PC Tech Journal Marketplace is a special 
economical section for product and service 
listings. 

Listings are grouped by category and sold by 
column inches. Second color option 
available. 

Standard Directory Listings are also available 
for a minimum of 3 issues at $170 per issue 
($510 total). 

For additional information 
call 212-503-5115. 


PC Tech Journal Classified Advertising Staff 
One Park Avenue, New York, NY 10016 
(212) 503-5115 


Account Managers 
Lisa B. Stick (212) 503-5172 


Advertising Director 
Kathryn J. Cumberlander 
Sales Manager 
Daniel L. Rosensweig 
Sr. Advertising Coordinator 
Monica Dixon 
Advertising Coordinator 
Angela Kiffin 


Sales Assistant 
Linda Annis 

Production Manager 
Anne R. Brockinton 
(212) 503-5441 

Production Coordinator 
Elliot Appel 
(212) 503-5470 


AL, AR. IA, IL, IN. KS. KY, AZ, CO. OR. NM. LA. 

ML MN. MO. MS. NB, ND, OH. OK. SD, TN. TX, NV, 
AK. GA. UT. CA (ZIP 92999 & DOWN), CANADA 
(OTHER THAN BRITISH COL.) AND ALL OVERSEAS 
CALLS. 

CT, MA, ME, NH, NJ, NY. RI. ID, MT. MD, VT. DC, 
DE, HI. NC, SC, FL, VA, WV, WI, PA. WA, WY, CA 
(ZIP 93000 & UP) BRITISH COL. 


196 


PC TECH JOURNAL 

























































HARDWARE/ACCESSORY CARDS 


TECH MARKETPLACE 

THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET 


(Mi mm 

IN 80386 TECHNOLOGY 

SWITCH YOUR SLOW IBM 
"AT/XT286" INTO A FAST 386 !! 

WITH THE KW386-ET16 

FEATURES: 

75 TO 250 ’/i FASTER THAN "COMPAQ" 

80386 SYSTEM SPEEDS OF 12 TO 
24 MHZ AND AT/XT286 BUS SPEED 
OF 6 TO 12 MHZ 

SELECTABLE 80287/80387 MATH CHIP 
SPEEDS AT 8/10/12/14/16 MHZ 

HIGH SPEED MEMORY EXPANDABLE 
TO 16 MEG ON BOARD 

BGI 386 BUS INTERFACE 
EXPANSION CONNECTOR ON REAR 
OF THE BOARD MILL PROVIDE 
COMPATIBILITY WITH "IBM 
386/RISC COMPUTER SYSTEMS 

KU CPU BOARD WILL TAKE ONE 
16 BIT EXPANSION SLOT 


BGI 


BUILT IN 386 BIOS WILL INTERFACE 
WITH,."IBM BIOS" TO PROVIDE 100 7. 
SOFTWARE & HARDWARE COMPATIBILITY 

COMPUTER DIV. <215)538-3900 


CIRCLE 375 ON READER SERVICE CARD 


MARCH 1987 


197 











HARDWARE/ACCESSORY CARDS—PERIPHERALS 


TECH MARKETPLACE 

THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET 


Hardware 


Accessory Cards 


Z80 and HD64180 CO-processors 

For PC, PC/AT. Clock speeds to 9mhz. Prices start 
at $199.50. Run CP/M-80 software fast. De¬ 
velop code for Z80/HD64180 with software ICE. 
Run Intel ISIS tools. Interface to real world with 
iSBX bus devices. High speed communications, 
including Apple Talk compatible. 

Decmation 

2065 Martin Ave. #110 
Santa Clara, CA 95050 
(408)980-1678 

PC ANALYZER 

Real-Time debugging package for your PC or XT. 
Complete with board and debugging software. 
Also allows you to use your own software de¬ 
bugger. Nonintrusive operation, simple to in¬ 
stall. Operates with DOS & QNX. Price $995. Free 
shipping. 

Sofpak Technologies, Inc. 

215 Stafford Road, Unit 101 
Ottawa, Canada K2H 9C1 
(613)726-1908 


DIGITAL SIGNAL PROCESSOR 

The Model 10 coprocessor board is based on the 
16/32 bit Tl TMS 32010 and is designed for ap¬ 
plications in communications, speech, instru¬ 
mentation, and numeric processing. A IK 
complex FFT takes 90ms. Offered with onboard 
12 bit 40 Khz A/D and D/A. Includes all utility 
and applications software. $650-$850. 

Dalanco Spry 

Suite 241 2900 Connecticut Ave. NW 
Washington, DC 20008 
(202)232-7999 


PC-PROMPAK 
ROM Expansion for PC! 

Aldia systems introduces PC-PROMPAK, a “half¬ 
sized” PROM/ROM expansion board for IBM and 
IBM compatible PCs. PC-PROMPAK will sup¬ 
port up to six 28-pin JEDEC compatible devices 
(ex: 2764,27128,27256,27512,6264, etc.) with 
individually selectable address ranges. Prices 
start at $125 for single units. Quantity discounts 
and OEM arrangements available. MC/VISA. 
ALDIA SYSTEMS, Inc. 

P.O. Box 37634 
Phoenix, AZ 85069 
(602)866-1786 


IBM-AT SPEEDUP 

The High-Performance 
Speedlnjector'from Ariel 


As the industry's recognized leader in high-performance speedup 
products, Ariel has performed extensive research and developed 
unmatched experience in this field. Our products offer the complete 
solution. 


• XCELX 286/287 XPRESS ,m -A Speedlnjector for ALL IBM-ATs. Uses relia¬ 

ble frequency synthesis for full compatibility and high performance 
• 100% variable from 5-13 MHz CPU speed, while running • Mode 
switch defaults to standard 6 MHz or fast mode • Hardware reset 
switch • Speedup the 80287 independently. Choose from: Stand¬ 
ard— 1 /* CPU speed, 8, 10, 12, 14, or 16 MHz actual co-processor 
speed • Rear mounted • One-year warranty.$ 99.95 

• XCELX 286/287 XPRESS + The Speed Utilities The Speedlnjector 

with software that will display exact XCELX frequencies • speedup 
hard disk by 50% • speedup keyboard reaction time • correct 
floppy disk access.$139.95 

• FAST 80286-10— For CPU speeds of 10 + MHz.$299.95 

• FAST 80287—8, 10,12,14,16 MHz.Call 

• FAST RAM 100 8c 120 NS, 128K 8c 256K.Call 

• Mil-Spec Crystals—The famous Ariel Crystals. For early ROM ATs. 

Available: 16-17-18-19-20-22-24 MHz.$ 19.95 



increase 
overall speed 
up to 300 % 


P.O. Box 866- 


ORDER HOTLINE: 
201-788-9002 


Flemington, NJ 08822 


CIRCLE 392 ON READER SERVICE CARD 


FIXED DISK BIOS/BOOT 

FiXT boots from most popular Hard Disks—DA- 
V0NG, TECMAR, IOMEGA, GT LAKES, etc. Adds 
XT-like BIOS interface to your disk for PC. Se¬ 
curity, multiple volumes, removable media sup¬ 
port optional. No-slot plug-in installation. Specify 
controller and computer with order. $80-$95. Add 
$3 shpg., CA tax. 



GOLDEN BOW SYSTEMS 
2870 Fifth Avenue 
Suite 201 

San Diego, CA 92103 
(619)298-9349 


PC-SPRINT 


“ PC-Sprint is the most cost 

effective PC Speedup product 

on the market." 

—Computer Shopper Magazine 

• Run your PC, XT or clone 
at 7.38 mhz. 

• 280% Speedup (Norton 
SI rating) 

• Speeds up all software— 
you can see the difference 

• External speed switch 

• External reset button 

• Change speed “on the fly” 

• Compatible with 8087 

• Works with all color or 
mono displays 

• “Slotless” plug-in on most 
PCs 

• Includes: Selectable top 
speed, instructions, war¬ 
ranty, tool, remote mount 
switch, free BBS 
subscription 

$0095 V20 add SIO. Call for infor- 
mation on other products 


Exec-PC, Inc. 

P.O. Box 11268 Shorewood, WI 53211 
(414)242-2173 £33 I 

CIRCLE 377 ON READER SERVICE CARD 


Tech Marketplace. . . 

the comprehensive 
guide to products and 
services for the MS 
DOS market. 


Truly Low Cost PC Imaging! 

-U ' 


* 295 °° 

— complete — 



=IMA GE A CE11= 

Video Capture System 


• Digitize video from cameras, 
tuners, and VCRs directly to 
your IBM PC display 


• 320 x 200 x 4 levels 


• 1.3 sec. full screen capture 

• Complete with hardware card, 
software, cable, and manual 


l odGE F IectronIcs 


P.O. Box 338 • Streamwood, IL 60103 

^=(312) 837-6553= 


CIRCLE 378 ON READER SERVICE CARD 


General 


VIDEO LAN‘LINK SYSTEM’® 

FOR IBM, PC, PC/XT, PC/AT labs. Instructor has 
complete control of all trainee computer moni¬ 
tors. Instructor can 1) transmit image, 2) receive 
trainee image or 3) transmit any trainee image 
to any/all trainees. Color or mono. Software in¬ 
dependent. Increases instructor efficiency and 
trainee comprehension. 

APPLIED COMPUTER SYSTEMS, INC. 

3060 Johnstown-Utica Road 
Johnstown, OH 43031 
1-800-237-LINK 


Peripherals 


SPEECH SYNTHESIS 

SynPhonix: TRUE Unlimited Speech Synthesiz¬ 
er for IBM-PC/XT/AT/jr & compatibles. This low 
power short card includes an SSi263 speech 
chip, amplifier and speaker. Software includes 
Text-to-Speech, Phonetic Editor, Talking Clock 
8< demos. Can be programmed with BASIC and 
other languages. Prices start below $200. 

S ynPhonix 

Electronic Speech Articulator 

Artie Technologies 
1311 N. Main St. 

Clawson, Ml 48017 
(313)435-4222 

CP/M & 1.2Mb AT ON PC 

With MULTI-DISK card & UniForm-PC use 3.5, 
5.25 & 8-inch single & double density CP/M 
format as DOS diskettes on your IBM PC or XT. 
Many MS-DOS formats supported including IBM 
AT 1.2 Mb. HP-150 & Data General 1. Over 200 
formats. Both MULTI-DISK & Uniform-PC for 
$225. Disk drives & adapter cable available. 

PS Engineering 

P.O. Box 51068 

San Jose, CA 95151-5068 

1-800-369-2398; 1-800-423-7171 in CA. 


198 


PC TECH JOURNAL 












































_ __ _ HARDWARE/PERIPHERALS—SOFTWARE/GENERAL 

TECH MARKETPLACE 

THE COMPREHEN SIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET 


Peripherals 


EPROM/EEPROM PROGRAMMER 

Programs 2716-27512, 25xx, 68764/66 eproms 
via RS-232. Also 874x, micros, 28xxA & 52Bxx 
eeproms. Automatic Baud rate select, built in 
menus, no personality modules. Price: $250. 
Mention this ad for free terminal software. 16 BIT 
I/O MODULE $75 

For control of input or output lines via RS-232. 

Use with modems for remote control. 

INTELLITRONICS 

P.0. Box 3263; Tustin, CA 92680 

(714)669-0614 

CREATE A DISKLESS PC! 

PC-ROMDRIVE allows users to create a “Disk¬ 
less PC” capable of booting a ROM-resident copy 
of MS-DOS and/or user application programs. 
PC-ROMDRIVE consists of a PC-compatible 
ROM/PROM expansion board and the PC- 
ROMDRIVE software. PC-ROMDRIVE is priced 
at $195 for single units. Quantity discounts and 
OEM arrangements available. MC/VISA 
ALDIA SYSTEMS, Inc. 

P.0. Box 37634 
Phoenix, Az. 85069 
(602)866-1786 


Software 


Accessories/Supplies 


Artificial 

Intelligence 


TURBO EXPERT 

Full Scale IBM-PC Expert Systems/Ready To 
Consult. $34.95. Runs on all compatibles. 

#1. THE STOCK MARKET EXPERT 
#2. THE EXECUTIVE HEALTH EXPERT 
#3. THE PSYCHIATRY EXPERT 
#4. THE TURBO EXPERT TOOLKIT III 
Please specify # when ordering. 

Thinking Software, Inc. 

46-1665 Place 
Woodside, N.Y. 11377 
(718)429-4922 


FOR INFORMATION 
OR TO PLACE 
YOUR AD 
IN 

PC Tech Journal 
Marketplace 
Call 

( 212 ) 503-5115 


DISK 

COPIER 


Fast (one minute) 
Simple (one button) 

Reliable (one board) 
$995 (one price) 



275 Santa Ana Ct., Sunnyvale, CA 94086 
(408) 737-8441 

CIRCLE 379 ON READER SERVICE CARD 



Business 


OPERATIONS RESEARCH 

TSA88 Transportation Simplex Algorithm 

(up to 510 sources, sinks or trans¬ 
shipment points) 

TNET88 Transportation Network System 

(networks up to 510 nodes & 16K 
links) 

TPR088 Transportation Problem Solver 

(shortest path, tours up to 50 stops) 
Req. 192K, color graphics adaptor. $99 each w/ 
8087 support, User’s guide. Write or call for our 
brochure. 

EASTERN SOFTWARE PRODUCTS INC. 

P.0. Box 15328, Alexandria, VA 22309 
(703)549-5469 


Auto-Pilot™ 

Put your responsibilities on Auto-Pilot: ToDo list, 
sophisticated Tickler file, appointment calendar. 
Tracks employee assignments/action items. 
Windows display future, present, and uncom¬ 
pleted past events. Multi-users, multi-files, pe¬ 
riodic & one time events. DOS 2.0+ PC/XT/AT/ 
compatible $29.95 Check/Visa/MC 
Advanced Concepts 
P.0. Box 246 
Ironia, N.J. 07845 

1 -800 235-6646 Ext 852 1 -800-235-6647(CA) 


Communications 


PC SERIAL DATA ANALYZER 

Use your IBM PC or compatible to analyze data 
streams between two serial devices (up to 9600 
BAUD). Two windows display each devices 
transmission in ASCII or HEX. PC can also act 
as a terminal for either device. Invaluable tool for 
debugging serial interfaces. Disk & manual $150. 
Triple C Software 
2897 SW 13th St. 

Fort Lauderdale, FL 33312 
(305)583-0687 


Engineering 


ENGINEER’S AIDE 

• Pipeline/Ductwork Sizing 

• Pump/Fan/Compressor Sizing 

• Heat Exchanger Sizing 

• Orifice/Control Valve Sizing 

• Project Financial Analysis 

• Conversion Calculator 

• Specification Writer 

Pull down menus, Pop-up help windows, Single 
Screen entry & results-ALL above for $395 (into 
price, $back guarantee). For IBM & MAC. 
ENGINEERING PROGRAMMING CONCEPTS 
P.0. Box 925 
Camarillo, CA 93011 

(805)484-5381 In CA. 1(800)367-3585 


METAL FABRICATORS 

PC/Cultist takes input from your bill of mate¬ 
rial—Detail drawing and calculates the best 
cutting combination for any length stock and 
prints a shop ready cutting list and scrap report. 
Also an optimization feature finds best multi 
length for mill orders. Price $300. Demo Disk 
$25 00 

THE JOSEPH ALBERT CO. 

P.0. Box 611 

Blue Island, Illinois 60406 
(312)349-9032 


FINITE ELEMENT ANALYSIS 

MSC, the leader in FEA technology, markets a 
full line of FEA tools for personal computers. 
Starting at $45 for MSC/pal INTRO on either the 
IBM PC or the Apple Macintosh, our products 
are designed to be complete and easy to use. 
Interfaces for most CAD systems available. 

The MacNeal-Schwendler Corporation 
815 Colorado Blvd. 

Los Angeles, California 90041 
(213)259-3888 


Expert Systems 


CxPERT for Expert Systems 

C programmers interested in using expert sys¬ 
tems technology will love CxPERT. Al features 
such as explanations, why, frames, av pairs, le¬ 
gal values and more are completely compatible 
with C. Create executable systems with no roy¬ 
alties. $165 + $5 s&h. MD add 5%. CK/MO/ 
Visa/MC. Req. C compiler & DOS 2.0+. 
Software Plus 
1652 Albermarle Dr. 

Crofton, MD 21114 
(301)261-0264 


General 


DOCUMENTATION-BY MAIL’" 

Technical writing service specializing in long¬ 
distance production of economical and timely 
manuals for small, medium-sized and large de¬ 
velopers. Tutorials, user’s guides, reference 
manuals. Fixed price contract, professional 
quality, quick turnaround. Call for credentials, 
sample and free estimate. 

BNP Enterprises, Inc. 

20370 SW 84 Ave. 

Miami, FL 33189 
(305)253-2317 


GREAT SOFTWARE, CHEAP! 

Only $5.95 per disk for absolutely smashing 
Shareware and Public Domain programs! 
Money-back guarantee. PC-Outline, AutoMenu, 
PC-Key Draw, PC-DeskTeam, PC-Write 2.7, 
DOSamatic, Utilities Galore plus Databases, Ar¬ 
cade and Adventure Games. Lots more! IBM PC, 
PC jr, and compatibles. Send for free catalog. 
SHAREWARE EXPRESS 
31877 Del Obispo, Suite 102Q 
San Juan Capistrano, CA 92675 
(714)240-1322 


MARCH 1987 


199 

































SOFI'WARE/GENHRAL—PROGRAMMERS TOOLS 


TECH MARKETPLACE 

THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET 


General 


PUBLIC DOMAIN SOFTWARE INC 

Over 115 volumes of public domain software in 
CP/M & MS-DOS formats. 

• editors & compilers 

• text formatters 

• communications packages 

• many UNIX-like tools 
Write or call for more details. 

C Users' 
Group 

THE C USERS’ GROUP 
P.0. Box 97 

McPherson, KS 67460 
(316)241-1065 

TAPE/DISK CONVERSIONS 

Conversion services to or from over 500 com¬ 
puter systems: 

• Magtapes 
• Micro Computers 
• Mini Computers 
• Word Processors 
• Typesetters 

Our conversion capabilities surpass most in the 
industry. 

Pivar Computing Services, Inc. 

165 Arlington Hgts. Rd.#T 
Buffalo Grove, IL 60089 
(312)459-6010 


Graphics 


FORTRAN GRAPHICS LIBRARY 

GRAFMATIC (screen graphics): 75 MS 
FORTRAN/Pascal, R-M/Profort, Lahey FORTRAN 
callable subroutines. Fully documented, prof, 
graphics capabilities, inc. general utility, 2-D in¬ 
teractive, total 2-D plots, 3-D plots and solid 
models. $135. H-P or H-l plotter? get 
PLOTMATIC, complete plotter graphics library. 
Interfaces w/GRAFMATIC. $135. Both $240. 
MICROCOMPATIBLES, INC. 

301 Prelude Drive Dept. J 
Silver Spring, MD 20901 
(301)593-0683 


MetaWINDOW^/TurboWINDOW™ 

Advanced graphics toolkit provides Xerox Star/ 
Apple Macintosh style graphics on your IBM PC. 
Supports most popular graphics cards. Allows 
you to create pop-up menus, windows & icons; 
use proportionally spaced fonts; rubberband & 
rag lines, text or bitmap images; supports mouse- 
cursor tracking. Tightly optimized for use with 
Turbo Pascal, IBM Pascal, C, Fortran. 

METAGRAPHICS 

SOFTWARE CORPORATION 

METAGRAPHICS SOFTWARE CORP. 

4575 Scotts Valley Drive 
Scotts Valley, CA 95066 
(408)438-1550 

CIRCLE 399 ON READER SERVICE CARD 



FORTRAN TOOLS & GRAPHICS 

PC-PLT: CALCOMP and VERSAPLOT Compati¬ 
ble Graphics Package for the Fortran 
Programmer. Supports CGA, EGA, 
Tecmar and Printer Graphics. $325 
PC-TOOLS: 125 Subroutines and Functions 
Giving Fortran Programmers 
Complete access to the PC. $125 
ONTAR Corporation 
129 University Road 
Brookline, MA 02146-4532 
617-739-6607 


SCIENTIFIC DATA PLOTTING 

SCI-GRAF creates graphs up to 1680 X1712 dots 
(over 3 million pixels!) on Epson or IBM graph¬ 
ics, printers. Supports log scaling, overlays, 
point-labeling, legend creation, batch mode, 
wide-carriage printers, and color graphs on a JX- 
80. Requires DOS 2 or 3,256k. No credit cards. 
$99.95 

Microcomputer Consultants (MSC) 

32 WAnapamu Suite 190 
Santa Barbara, CA 93101 
(805)963-3412 


35mm SLIDE FROM YOUR PC 

COMPUTER SLIDE EXPRESS converts graphic 
files produced on the IBM PC into brilliant 35mm 
color slides with color resolution 400% better 
than your monitor. Leave your printouts behind. 
Use high resolution color slides up to 4000 line. 
COMPUTER SLIDE EXPRESS $9/slide. 

VISUAL HORIZONS 
180 Metro Park 
Rochester, NY 14623 
(716)424-5300 


Languages 


Operating Systems 



Real-Time Multitasking Executive 


■ No royalties 

■ Source code included 

■ Fault free operation 

■ Ideal for process control 

■ Timing control provided 

■ Low interrupt overhead 

■ Inter-task messages 

Options: 

■ Resource Manager 

■ Buffer Manager 

■ Integer Math Library 

■ Language Interfaces: 

C Pascal 
PL/M Fortran 

■ DOS File Access : 

CP/M-80 
IBM PC DOS 


| Tas> Schedule) |*~ 



AMX is TM of KAOAK Products Ltd 
CP/M-60 is TM ot Digital Research Corp 
IBM PC DOS are TM ot IBM Corp 


AMX for 8080 $ 800 US 

8086 950 

6809 950 

68000 1600 

Manual (specify processor) 75 


Jk KADAK Products Ltd 

IF 


(604) 734-2796 
Telex. 04-55670 
206-1847 W. Broadway, Vancouver, B.C., Canada V6J1Y5 
CIRCLE 380 ON READER SERVICE CARD 


FINALLY! MODULES 

Add class to your compiled BASIC programs 
with FINALLY! MODULES. Use pull-down 
WINDOWS, horizontal menus, pop-up help 
screens, input screen and directory mana¬ 
gers. For use with FINALLY! Library and 
Quick Basic 2.0 or IBM compiler 2.0 30 day 
MoneyBack guar. Visa/MC/CK/MO. FINALLY! 
MODULES is $99.00+ $4.00 s/h. 
Komputerwerk Inc. Dept PCT 
851 Parkview Blvd. 

Pittsburgh, PA 15215 
(412) 782-0384 


FORTRAN UTILITIES 

CROSS-REFERENCE UTILITY: Mainframe grade 
symbol x-ref listing for variables, subprogram 
calls and labels. Variable map shows type, length, 
alloc, scope, usage tag, etc. All FORTRAN 77 
compilers. $49.95 + $2.50 s&h. UTILITY LI¬ 
BRARY: Assembly language routines for screen 
cursor, keyboard, time, sound, etc. MS/IBM and 
IBM Pro/RM FORTRAN compilers. $39.95 + 
$2.50 s&h. IBM PC w/DOS 2.0+. Visa/MC/M0/ 
check (2 wks). 

PJN International 
P.0. Box 201363 
Austin, TX 78720 
(512)837-2888 


Programmers Tools 


ATTENTION TURBO PASCAL USERS! 

Crash the 64K Barrier 

TryTURBO PACKAGE now! 

90 day money back guarantee! 

Modular Programming! 
Promotes REUSE of working CODE 
CUTS development TIME 
IMPROVES system RELIABILITY 
SIMPLIFIES program MAINTENANCE 

FILL 640KB with code data any way you want 
VERY FEW CODE CHANGES. 
FASTER than chaining or overlaying 

SUPERMATH, FREE! 

With purchase of Turbo Package 
40 plus LONG (32-bit math) routines 
Faster than real - big enough for $. 
ASM coding insures top performance 

Just S49.95 (in TX add tax) 

Visa'MC (no shipping chg) 

Write or call for more information 


CONVERSATIONAL COMPUTER SYSTEMS 

5371 Verbena Rd. 

San Antonio. TX 78240 
Phone:(512)692-0353 

CIRCLE 395 ON READER SERVICE CARD 





200 


PC TECH JOURNAL 

















































SOFTWARE/PROGRAMMERS TOOLS 


TECH MARKETPLACE 

THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR T H E M S DOS M A R K E T 


Programmers Tools 


ROMable CODE on PC! 

PCLOCATE allows PC users to develop ROM- 
based software from MS-DOS “Exe" files. The 
user specifies the physical location of all seg¬ 
ments. Output files are compatible with most 
PROM programmers. PCLOCATE supports the 
8086,8088,80186,80188, and 80286 proces¬ 
sors. MC/VISA. 

ALDIA SYSTEMS INCORPORATED 
P.0. Box 37634 
Phoenix, AZ 85069 
(602)866-1786 


END YOUR FRUSTRATIONS — 

MASTER 

YOUR 

SCREENS 

WITH 

FORNIX 

Developing, testing & changing 
screens is tedious, frustrating, 
time-consuming work. 

Until now. 

With FORMIX, you can trouble¬ 
shoot before writing one line of 
code. You can even prototype 
the entire system with actual 
screens —complete with data 
entry. Little changes in screen 
design are little effort. So are 
major changes. 

Our advance panel-oriented 
system allows you to quickly 
develop complex screens that 
integrate several panels or 
windows. 

Plus, FORMIX has an on-line 
help system. You just write the 
application help text. FORMIX 
handles the rest. 

In short, FORMIX simplifies screen 
design and slashes the cost 
of program development. Let 
FORMIX handle the tedious, 
error-prone programming aspects 
while you concentrate on solving 
today’s application problems — 
and eliminating a lot of tomorrow’s. 
And there's more. Contact us for 
details. We're ready to prove the 
power, flexibility & simplicity of 
FORMIX. 



Master Computer Systems, Inc. 

FORMIX Division 
9531 West 78 Street 
Eden Prairie, Minnesota 55344 
612/944-5220 

FORMIX inleilaces with ADA. Assembler Bosic C 
Cobai Fortran & Pascal 


GENSCREENFORMS-COBOL 

Cobol Source Code Generator for generating the 
screen section and data division cobol source 
code for Microsoft and IBM PC cobol. Screen 
Image Text files are run through GENSCREEN to 
produce all of the source code for your screen in 
less than a minute. Super fast programmer pro¬ 
ductivity tool $69.99. 

Personal Computer Development Corporation 
P.0. Box 8556 
Warwick, R.l. 02888-8556 
(401)333-8704 

VERSION CONTROL SYSTEM 

TUB" stores ALL versions of your source in ONE 
compact library file, even with hundreds of re¬ 
visions. Updates (deltas), 5-7 times faster than 
Unix SCCS. Date & comments for each version, 
easy retrieval. LAN-shared libraries. Free public 
domain MAKE (with source) by Landon Dyer. 
DOS 2.x/3.x $99.95 $3 s/h VISA/MC. 

Burton Systems Software 
P.0. Box 4156-TJ 
Cary, NC 27511-4156 
(919)469-3068 


PASCAL-to-C TRANSLATOR 

Industrial strength conversion from Turbo, Mi¬ 
crosoft, UCSD, MT+, Apollo, Macintosh, and 
other Pascals to K&R C. Handles nested proce¬ 
dures, intrinsic functions, separately compiled 
units and modules, all data types including long 
integers. 

Requires 512K IBM PC/XT/AT. Send up to 500 
lines of Pascal and we will convert it for FREE. 
Site licensing from $5,000. Conversions 50 
cents/line. 

TGLInc. 

27096 Forest Springs Ln. 

Corvallis, OR 97330 
(503)745-7476 

TURBO FORMS 

Bullet-Proof user data entry. Unlimited charac¬ 
ter & field level data verification. Create & edit 
forms for data entry & display without recom¬ 
piling source code. Flexible formatting with 
graphics, windows, colors & display attributes. 
IBM PC & compatibles. One of PC Magazines 
“14 HOT TURBO UTILITIES’.’ $39.95 including 
S&H. MC/VISA or C.O.D. 

GREAT LAKES SOFTWARE SYSTEMS, INC. 
2510 Capital Ave. SW Suite 203 
Battle Creek, Ml 49015 
(616)962-2017 


SCREEN MANAGER 


SAVE TIME! Powerful Screen 
Designer and Memory Resident 
Screen Manager Increases Pro¬ 
grammer Productivity! Interfaces 
to most languages. BASIC, 
FORTRAN, COBOL, C, PASCAL, 
PLM86, ASM. Not a Code Genera¬ 
tor! No Royalties. 

The West Chester Group 
P.0. Box 1304 
West Chester, Pa 19380 

(215) 644-4206 


$■ 


125 


FREE DEMO DISK 

CIRCLE 383 ON READER SERVICE CARD 


Fortran Addenda ’86 

Libraries for graphics and friendly/interactive 
programs. ASMUTIL2: Total PC control; printers 
(3), CRTs (2), disks, FULL keyboard, strings, 
high-speed gets/puts, line/box, fills tile paint¬ 
ing, CGA/EGA/Hercules graphics. BUTILE 2: In¬ 
put wordprocessing/editing, non-overflowing 
formats, window management... 100 easy to 
program, “smart” routines + defaults/toggles. 
170 pg. manual & annotated samples. $95 alone; 
both $165. Specify compiler and version. 

A IMPULSE 

ENGINEERING 

IMPULSE Engineering, B.R. Strong, Jr. 

P.0. Box 3540 

San Francisco, CA 94119-3540 
(415)788-4611 


FIRMWARE PRODUCTION ON PC 

LINK&LOCATE enables PC users to produce 
ROM-based firmware for 8086/87/186 from ob¬ 
ject files generated by C, PL/M compilers & 
MASM. Provides full control of segments place¬ 
ment anywhere in memory. Supports output of 
INTEL hex file for PROM programmer, absolute 
object file for symbolic debugger & ICE, and MS- 
DOS EXE file. Includes an INTEL compatible 
linker, locator, librarian and hex formatters. $350. 



Systems & Software, Inc. 
3303 Harbor Blvd., C11 
Costa Mesa, CA 92626 
(714)241-8650 



pressure monitor display screen 

MASCOT network diagram 


Andyne 

| COMPUTINGLIMITED | 


Suite 202, 544 Princess St., Kingston, Ont. 
Canada K7L1C7 (613)548-4355 


PCMASCOT 

Real-Time Multitasking 
Kernel for the IBM PC 

• Supports MASCOT modular real-time design 
methodology 

• Extensive built-in debugging facilities 

. Shared memory for intertask communication 

• Synchronization and mutual exclusion 

• Modular design and implementation approach 
allows unit and sub-network testing 

. Can use DOS DEBUG with application 

• Can access all PC-DOS facilities 

• C language interface (specify compiler) 

. Device drivers may be written in C 

• No royalties 

• $795 includes software, manual, support, 
updates 

ON READER SERVICE CARD 


PC CROSS-ASSEMBLERS 

Up to 10,000 lines per minute! Fast X-ref and 
Linker plus Macros and Librarian. Generates 
HEX, TEKHEK, S-records, and .OBJ output rec¬ 
ords. Over 40 micros and XENIX, MS DOS, CPM 
80 and ISIS versions. Accepts MOTOROLA and 
INTEL directives and Mnemonics. 

RELMS" 

P.0. Box 6719 
San Jose, CA 95150 
(408)265-5411 


BOOSTERS V2.0 IS HERE! 

Tools for Turbo Pascal programmers who need 
the speed and efficiency of inline code. 70 + 
string, video, and DOS routines—incl. Exec. 
V2.0 also incl. powerful new SCREEN GENERA¬ 
TOR, DOS SHELL, and many example programs. 
All Pascal and assembler source, manual, update 
notices. No Royalties. S40 + 4% GA tx. Visa/MC. 
GEORGE F. SMITH & COMPANY 
609 Candlewick Lane 
Lilburn, GA 30247, (404) 923-6879 


LINK & 

LOCATE 

LINK & LOCATE 
enables PC users 
to produce ROM- 
based firmware for 8086/87/186 from object files 
generated by popular C compilers, such as from 
Wizard, Microsoft and Lattice, and MASM assembler 
from Microsoft. Provides full control of segment 
placement anywhere in memory. Supports output of 
Intel HEX file for PROM programmers, Intel OMF 
absolute object file for symbolic debuggers and 
in-circuit emulators. Includes Intel compatible linker, 
locator, librarian and hex formatters. $350. 

Systems & Software, Inc. 

3303 Harbor Blvd., Cl 1, Costa Mesa, CA 92626 
Phone(714) 241-8650 FAX (71 4) 241-0377 TWX 910-695-01 25 
CIRCLE 384 ON READER SERVICE CARD 



MARCH 1987 


201 































SOFTWARE/PROGRAMMERS TOOLS—SCIENTIFIC 


TECH MARKETPLACE 

THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET 


Programmers Tools 


MS-COBOL SCREEN/DATA DIV. 

MSCREEN generates Screen Section code for 
MICROSOFT/IBM COBOL. Paint/Edit screens. 
No other editor needed. Select from complete set 
of attributes for each field. No field terminators. 
Many other features! COBWORK generates Data 
Division code for MICROSOFT/IBM/COBOL. $85. 
TAJEVA SOFTWARE 
6064 Belle Grove Cove S. 

Memphis, TN 38115 
(901)365-4692 

PRE-PROCESSOR 

Add custom features to any language: longer 
identifiers, opcode, register and operator syn¬ 
onyms, nested macros, etc. C Source Code in¬ 
cluded. Not copy protected. OK to share. $19.95 
+ s/h. MC/VISA. 

SUPERTECH 
11410 NE124 St., #6143 
Kirkland, WA 98034-4399 
(206)488-9253 


Quelo®680jQ0 

Software 

Development 

Tools 

Quelo Assembler Packages are 
Motorola compatible. Each 
package includes a macro as¬ 
sembler, linker/locator, object li¬ 
brarian, utilities for producing 
ROMable code, extensive in¬ 
dexed typeset manuals and pro¬ 
duces S-records, Intel hex, 
extended TEK hex, UNIX COFF 
and symbol cross references. 
Portable source written in “G” is 
available. It has been ported to a 
variety of mainframes and minis 
including VAX. 

68020 Assembler Package 

For CP/M-86.-68K and MS PC-DOS . $ 750 

68000/68010 Assembler Package 

For CP/M-80.-86.-68K and MS PC-DOS . $ 595 

68000 “C” Cross Compiler 

For MS/PC-DOS by Lattice. Inc. 

With Quelo 68000 68010 Assembler 

Package.$1095 

With Quelo 68020 Assembler Package $1250 

Call Patrick Adams today: 
Quelo, Inc. 

2464 33rd W. Suite #173 
Seattle, WA USA 98199 
Phone 206/285-2528 
Telex 910-333-8171 

COD, Visa, MasterCard 

Trademarks: CP M. Digital Research; MS. 
Microsoft Corporation: Quelo. Quelo. Inc. 

CIRCLE 382 ON READER SERVICE CARD 


BASIC + StruBAS 

Developing serious applications in compiled 
BASIC? It’s easier with StruBAS v2.0 tools com¬ 
plementing QuickBASIC and IBM BASIC 2.0 with 
extended structured code, screens, menus, na¬ 
tive ISAM, Btrieve interface, and subroutine ob¬ 
ject library. $495 single, $1495 site license. VISA/ 
MC. Not copy protected. 

Laney Systems Inc. 

3 Office Park Dr., Suite 100 
Little Rock, AR 72211 
501-225-7755 

True Shell for BASIC 

SHELL any other program or batch file, includ¬ 
ing other compiled BASIC programs and the 
BASIC interpreter. Requires DOS 2+and IBM (Ver 
1 or 2) or Microsoft compiler (QB1, QB2 or 5.36). 
QB2 requires DOS 3+. Only $29.95 + $3 s/h. 
MC/VISA/COD OK. 30 day money-back perfor¬ 
mance guarantee. 

MicroHelp, Inc. 

2220 Carlyle Drive 
Marietta, GA 30062 
800-922-3383. In GA 404-973-9272 


APL Programmers! 

Interface C and APL*PLUS with APL2C'“! Speed 
up your APL code. Link to C libraries. Includes K 
& R C compiler. $195 Complete. FULLSCREEN 
Panels™ is here! Screen Generator and full¬ 
screen processor for the APL environment. Pop- 
ups, panels, menus, scrolling fields NO ROY¬ 
ALTIES, $150. 

Lauer Software 
PO Box 728 

Newtown, PA 18940-0728 
(609)921-6249 

BASIC Base 007 

BASIC database library including menues, 
passwords, program generator, query, screen 
control, data record control, index commands for 
add, delete, find, find next, find last. $15 demo 
with disk manual and compiled database soft¬ 
ware. $99 development system with library 
source code and printed manual. $165 for com¬ 
piled & all 4,000 + lines of BASIC code. 
Application Micro Computers, Inc. 

1663 Bachan Ct. 

Reston, Va. 22090 
(703)471-1471 -3:00 to 9:00 P.M. 


--;—;-n 

Productivity Tools 

Software Revision Management System 

SRMS is a full featured version control 
system featuring: 

* 10 Integrated Utilities with user shell 

* Capability for hundreds of versions/library 

* Merge utility resolves parallel effort conflicts 

* Report Generation Utilities 

* Typeset documentation and much more! 

_ XusMJJL __ 

QMAKE™ 

* Program generation utility patterned after 
UNIX make to aid in rebuilding sytcms 

* Recompiles only routines necessary 

* Support for macros and multiple entry points 

* Integrates fully with SRMS 

_Mn JL2_S22_ 

TXTTOOLS 

• QDIFF - Windowed File Difference Utility 

• QSE - Quilt Stream Editor * 

• QSRCH - Like UNIX GREP 585 


Quilt Computing ($$] 

7048 Stratford Road 2221 

Woodbury, MN 55125 CIRCLE 396 ON 
1(612) 739-4650 READER SERVICE CARD J 


FRUSTRATED WITH ASSEMBLER 

Unique shareware program adds structure to 
assembly language. IBM/MASM compatible. 
Develop and debug faster with structured con¬ 
cepts. IF-THEN-ELSE, SELECT-WHEN-OTH- 
HER, DO WHILE/UNTIL/INCREMENTAL and 
combinations. LEAVE/LEAVEALL loop exits, and 
file includes. Nest 16 deep. $6 disk, $25 
registration. 

MICHAEL! HOLLAND 
8808 Boulder Lane 
Little Rock, AR 72207 
(501)224-2749 


Turbo Pascal Programmers: 
15 MINUTES = 200 HOURS! 
with new turboMAGIC 
code generator. 

Input forms and help windows up to 66 
lines long. Scrolling within framed win¬ 
dows for data-entry or help. Pop-up 
menus. Pull-down menu systems. And 
much more! Just $99. 30-day money- 
back guarantee. Requires 256K IBM 
PC compatible. Orders: 800-225-3165 

|lH Sophisticated Software 

6586 Old Shell Road 
Mobile, AL 36608 
205-342-7026 

CIRCLE 397 ON READER SERVICE CARD 


“NEW” BIT-LOCK® SECURITY 

Piracy SURVIVAL “>4" YEARS proves effective¬ 
ness of powerful multilayered security. Uses rapid 
decryption algorithms and small reliable port for 
transparent security device. NOW AVAILABLE tor 
PARALLEL or SERIAL port. NEW KEY-L0K'“ se¬ 
curity device available at HALF-PRICE. 
MICROCOMPUTER APPLICATIONS 
7805 S. Windermere Circle 
Littleton, CO 80120 
(303) 798-7683 or 922-6410 


Public Domain 


TURBO PASCAL " SOFTWARE S6 

Write or call for information about: 

• Systems & applications development tools 

• Programs for home and business 

• Communication tools & applications 

• Games in specialized applications 

• Scientific/engineering programs & routines 

• Graphics including animation tools 
TURBO S.I.X. 

P.0. Box 8373 
Waco, TX 76714 
(817)753-2182 


Tech Marketplace, 

the home 
of the 

power buyer. 


NEW PUBLIC DOMAIN LISTING 
13,000 MS DOS PROGRAMS with brief de- 
scriptions, 52 pages, $4. Also available on disks 
for $10 including search program. This months 
special set 5 disks $2 including p+h. 90 pro¬ 
grams including Mandelbrot Set Images, Cal¬ 
Tech utilities, advanced Lotus tutorial, artificial 
art, Freecalc V2, Genealogy V4. Send your card 
+ $4 to or call: The Public Domain Software Co. 
THE PUBLIC DOMAIN SOFTWARE COPYING 
COMPANY 
33 Gold Street 
NYC, NY 10038 

800-221-7372 • NY 212-732-2565 


TURBO PASCAL $2/disk 

TSS is a BBS-by-mail, no modem needed (long 
distance is more $$$ than mails)! 60+ disks of 
Pascal files. Most incl. source code. All files 
compressed. Membership fee ($25) incl. free 
starter pkg. and 2 FREE disks with 1st order. Non¬ 
members $7/disk. Cat. list $5. VISA/MC/C0D 
(s/h extra) (data) 617-545-9131 
TURBO SOURCE SEARCH 
PO. BOX 876 
SCITUATE, MA 02066 
(voice) 617-545-6677 


Scientific 


SCI/ENG GRAPHICS 

0MNIPL0T [S] (screen graphics) & 0MNIPL0T 
[P] (plotter driver) provide integrated engineer¬ 
ing/scientific 2-D & 3-D graphics with NO PRO¬ 
GRAMMING! Menu-driven, flexible, professional. 
Choice of formats: tabular/line, contour, bar, pie, 
3-D wire frame & much more! 0MNIPL0T [S] 
$195. Add 0MNIPL0T [P], both $295. 
MICROCOMPATIBLES, INC. 

301 Prelude Dr. Dept. J 
Silver Spring, MD 20901 
(301)593-0683 


8087 FFT/VECTOR PROCESSING 

The VECT0R87 library is written in assembler, 
includes 60 routines to speed up your number¬ 
crunching programs. Uses 80(2) 87 extensively. 
PC IK real FFT takes only 1.2 sec. Versions for 
Fortran (MS, RM, Lahey), C (MS, Lattice), Turbo 
Pascal -87. $150 per version with source, no 
royalties. Write for technical information. 
VECT0RPLEX Data Systems Ltd. 

136-100 Maitland Place N.E. 

Calgary, Alberta, Canada T2A 5V5 
(403)248-1250 


DATA ACQUISITION & ANALYSIS 

‘MEASURE for data acquisition directly to Lo¬ 
tus 1-2-3*FOURIER PROSPECTIVE II advanced 
signal digital analysis ‘Lotus Manuscript & 
technical document preparation system*PRIME 
FACTOR FFT subroutine library. Call Turbo Pas¬ 
cal, C, Fortran, Basic. Up to 65,520 data-points. 
2D available*Turbo Pascal from Borland 
‘TELEVISION for Image Communications 
*8087 Coprocessors, all varieties*Dash-16A/D 
converter board from MetraByte. 

ALLIGATOR TECHNOLOGIES, INC. P.0. Box 11386 
Costa Mesa, CA 92627 (714) 662-0660 


202 


PC TECH JOURNAL 
































SOFTWARE/SCIENTIFIC—UTILITIES 


TECH MARKETPLACE 

THE COMPREHENSIVE GUIDE TO PRODUCTS AND SERVICES FOR THE MS DOS MARKET 


Scientific 


NUMERICAL C SOFTWARE 

Computationally stable numerical routines for 
scientific C software developers. LINLIB con¬ 
tains all the basic vector and matrix routines so¬ 
lutions to equations, LU, QR, Cholesky factors of 
matrices, least squares solutions. LINLIB has 
splines, B-spline routines, spline interpolation, 
spline approximation of data. $150. 
INFORMATION AND GRAPHIC SYSTEMS 
15 Normandy Court 
Atlanta, GA 30324 
Call (404) 231-9582 


Security Devices 


SMART COPY PROTECTION 

Attention Software Developers, are you tired of 
Copy Protection that: 

-is NOT transparent to the user. 

-does not allow backups. 

-requires I/O plugs or special media. 

-doesn’t support hard or cartridge disks, 
-makes you pay for every disk protected, 
-requires source code changes. 

-can be beaten by hardware copy boards. 

If so, EVERLOCK can solve these problems for 
only $495. Free info & demo disk available. 



Az-Tech Software, Inc. 
426 Grandview 
Richmond, MO 64085 
(816)776-8153 


SECURE AT/XT/PC 

Control system access, data access! FiXT/S. 
Control system boot for most popular XT /PC hard 
disk controllers. Feature for AT-and-XT-com- 
patible HD controllers segments hard disk by 
volumes, controls access with passwords, sup¬ 
ports hard disk expansion. $80 $120+$3 shpg. 
plus CA tax. 



Golden Bow Systems 
2870 Fifth Ave. Suite 201 
San Diego, CA 92103 
(619)298-9349 


Multi-User Security 

File access by user at the directory or sub-direc¬ 
tory level. Protection from unauthorized format¬ 
ting of specified drives by user. User transparent. 
Accounting reports by user and category. 
PC-LOCK $90. 

ONTAR Corporation 
129 University Road 
Brookline, MA 02146-4532 
617-739-6607 


Statistics 


RATS! VERSION 2.0 

RATS, the best selling Econometric software 
package now includes daily & weekly data, a new, 
easier to use 500-page manual, & many ad¬ 
vanced features. Use RATS for time-series & 
cross-section regression, including OLS, 
ARIMA, VAR, logit, & probit. IBM PC or compati¬ 
ble. $200. VC/Visa. Call for brochure. 

VAR Econometrics, Inc. 

P.O. Box 1818 
Evanston, IL 60204-1818 
1(800)822-8038 

P-STAT® 

Full mainframe package for IBM PC/XT/AT & 
compatibles. Combines data & file manage¬ 
ment, data display, statistical analysis, report¬ 
writing & survey analysis in a single package. 
4GL programming language, online HELP, menu 
or command driven with interactive EDITOR. $95 
demo and Site License available. 

P-STAT Inc. 

471 Wall Street, P.O. Box AH 
Princeton, N.J. 08542 
Telephone: 609-924-9100 
Telex: 466452 

STATISTICAL FORECASTING 

AUTOBOX, AFSEZF, AUTOBJ, BOXX, MTS and 
SIMBOXJ-a complete line of programs for Box- 
Jenkins time series analysis and forecasting. 
Combine the ultimate in sophisticated forecast¬ 
ing procedures with unparalleled ease of use. Call 
or write for more information-find out why our 
users are our best reference! 

AUTOMATIC FORECASTING SYSTEMS, INC. 
P.O. Box 563 Dept. T 
Hatboro, PA 19040 
(215)675-0652 


If you can buy only one statistics 
and forecasting package, choose 
the best. 

StatPac Gold " 

Call for free descriptive brochure: 

1 - 800 - 328-4907 


WALONICK ASSOCIATES, INC. 

6500 Nicollet Avenue S. Minneapolis, MN 55423 

(612) 866-9022 

CIRCLE 393 ON READER SERVICE CARD 


To place your ad 
in 

Tech Marketplace 

call 

212 - 503 - 5115 . 


All the Stats You Need 

BMDP offers the most comprehensive collection 
of programs for PCs & mainframes. BMDP has 
all the statistics you need. From the simple to 
the most sophisticated. Advanced techniques 
include time series, survival analysis, log-linear 
modeling & more! Hard disk req'd. Call for com¬ 
plete program details & prices. 



STATISTICAL SOFTWARE 


BMDP Statistical Software, Inc. 
1440 Sepulveda Blvd. 

Los Angeles, CA 90025 
(213)479-7799 


Taxes 


Where Does the Time Go? 

TUSKER knows! TIME & USAGE KEEPER logs 
and reports your computer time; meets and 
exceeds IRS requirements for proving tax 
deduction. 

• Define your own business uses 

• 6 reports in any date range for any printer 

• Log non-computer time too! 

DOS 2.0+. $88. Free brochure. $4 demo disk. 

Craig Banning 

Route 3, Box 317 

Big Pine Key, FL 33043 

(305)872-3817 


Terminal Emulation 


BARR/HASP INTELLIGENT RJE 
WORKSTATION 

Hardware and software communications pack¬ 
age for IBM PC, XT and AT. Simultaneously 
transmits data to host and receives output di¬ 
rectly to MVS/JES2, MVS/JES3, VS/RSCS, and 
CDC/N0S, bypassing TSO and CMS. Emulates 
IBM 3777-2 and HASP on IBM 360/20. Line 
speed: 1,200 to 19,200 baud (56,000 bps on AT). 
Supports multiple high-speed printers beyond 
2,400 Ipm. (6,000 Ipm on AT). Features: 
concurrent DOS, LAN support, printer forms 
control, plotter support, unattended operation, 
easy installation. $1,290 includes Hardware 
& Software. 

B4RR 


BARR SYSTEMS, INC. 

2830 NW 41 st Street, Building M 
Gainesville, FL 32606 
(800)-BARR-SYS/(904) 371-3050 


Utilities 


TallScreen—DOS POWER 

Natural extension of DOS. Scroll back through 
screen output, edit text on full screen, mark blocks 
to printer or file, recall commands & directories, 
enter multiple commands, capture screens from 
application programs, create user profiles. Solid 
tech support. PC MAG & PC WORLD calls 
TallScreens a Real bargain at $49.95. VISA/MC 



8314 Thoreau Drive 
Bethesda.MD 20817 
(301)469-8848 


SAVE THAT SCREEN! 

Do you immediately reach for the PrtSc key to 
save screen info? What a waste of time and pa¬ 
per! Now, UCREENSNAP' M lets you save and re¬ 
call up to 9 screens at the touch of a key. Friendly 
with other r isident programs but unlike some it 
is compact; will run in as little as 5K. Also in¬ 
cludes useful utilities to save and recall from files, 
programmer’s interface and sample code. Build 
your own help screens with your text editor, then 
save and recall them with SCREENSNAR $39. 
Programming ARTS 
P.O. Box 219 
Milltown, NJ 08850 

Call 800-443-4160; NJ (201) 846-7242 


DOCUMENTATION MANAGER 

Create and maintain manuals - procedure man¬ 
uals, program documentation / system user 
manuals, etc. * Edit files with the excellent Nor¬ 
ton Editor (included) * Save User Defined con¬ 
figuration * Save screen dumps to files * Variety 
of Print Options * 

$69.95 complete MasterCard/Visa 

YJ) 

Xhenix 

PHENIX HOSPITAL SYSTEMS 
1616 Palm Avenue 
Deland, FL 32724 
(904)736-1132 

AT/XT/PC HARD DISK EXPANSION 

“Replace hard disk with a bigger one, or add a 
second drive! Vfeature BREAKS THE 33 MBYTE 
BARRIER on standard AT, XT, and compatible 
hard disk controllers. Includes multiple vol¬ 
umes, security features, selectable clusters, 
keyboard lock. $80-$120 + $3 shipping + CA 
Tax” 



Golden Bow Systems 
2870 Fifth Avenue, Suite 201 
San Diego, CA 92103 
(619)298-9349 


MARCH 1987 


203 








































SOFTWARE/UTILITIES 

TECH MARKETPLACE 

THE COMPREHENSIVE GUIDE TO PR O D U C T S AND SERVICES FOR THE MS DOS M A R K E T _ 


Utilities 


LIMSIM 

Expanded Memory Simulator for the PC/AT and 
compatible 286 machines. Use the extended 
memoiy you already have as Lotus style Ex¬ 
panded Memory. Fully supports EMS version 3.2. 
Requires 70k of conventional memory. $50 ($75 
with assembler source) plus $5 s/h. 30 day 
money back guarantee. 

Larson Computing 
1556 Halford Ave. #142 
Santa Clara, CA 95051 
(408)737-0627 

DISK UPGRADE BIOS for ATs 

DUB-14 overides AT Drives Table to allow any 
compatible drive to be attached and fully used 
on the standard AT controller. Two ROMs plug 
into empty sockets on system board. Includes 
complete Set-Up routine and low-level format 
facility. Works with UNIX, XENIX, other OS and 
networks. $95 + $3 shpg. CA tax. 



GOLDEN BOW SYSTEMS 
2870 Fifth Avenue, Suite 201 
San Diego, CA 92103 
(619)298-9349 

HARD DISK EXPANSION! 

Disk Manager allows the installation of any 
ST506 hard disk on PC,XT,AT and compatibles. 
Volumes up to 256mb! Menu driven/auto in¬ 
stall, compatible w/ all vers of MS/PC DOS (does 
not modify DOS), up to 16 volumes, easy to use! 
$125+ ship. Ask about Novell product! Dealer 
inquiries invited. 

QNTRPCK 

COMPUTER SYSTEMS INC. 

Ontrack Computer Systems, Inc. 

6222 Bury Drive 
Eden Prairie, MN 55344 
(612)937-1107 


DISK ACCELERATOR V2.0 

DiskCache speeds up your hard disk access. Disk 
caching and ram disk in one package. Ram disk 
shares cache space. Transparent, flexible, con¬ 
figurable, no h/w changes. RAM, EMS, and AT 
extended memory versions incl. Not copy pro¬ 
tected. VISA, MC, volume discounts. No PO’s 
w/o prior approval. $49.00 
Datamorphics Ltd., 

PO. Box 820 

Stittsville, Ontario, Canada KOA 3G0 
Or call (613) 836-2670 


FILE PRINT MANAGER 

GLISTER™ 

★ Use DOS wildcards to build a list of up to 100 
files to print 

★ Save/restore file lists 

★ Restart a file on any page after a printer jam 

★ Print multiple copies 

★ Control: margins, line/page length, spacing, 
user-formatted header/footer lines and more 

★ Prints files as fast as printer is capable $49 
Programming ARTS 

P.O. Box 219 
Milltown, NJ 08850 

Call 800-443-4160; NJ (201) 846-7242 


VCACHE GETS YOUR DISK 
MOVING! 

Hard disk accelerator increases speed of car¬ 
tridge and fixed disk operations using memory 
caching to eliminate repetitive disk access. Al¬ 
locate up to 15Mb of extended or expanded 
memory, or .5Mb of standard memory for cach¬ 
ing disk data. Includes diskette and screen ac¬ 
celerator modules. Automatic and transparent 
after installation. $65+ $3 shpg, CA tax. 



GOLDEN BOW SYSTEMS 
2870 Fifth Avenue, Suite 201 
San Diego, CA 92103 
(619)298-9349 


PC Tech Journal 
Marketplace: 


Kathryn J. Cumberlander 
Classified Advertising 
Director 


Daniel L. Rosensweig 
Classified Sales 
Manager 


Lisa B. Stick 
Account Manager 

Call: (212) 503-5115 


CHARACTER CUSTOMIZATION 

CHARGENI 3.0 works with the IBM/EGA to let 
you modify the character set, allowing many 
wordprocessors to display technical material, 
equations or other special characters. Requires 
DOS 2 x or 3.x, IBM Standard or Enhanced 
Graphics Adapter. $35+ $2 s/h (MN add 6%). 
DK Micro Consultants 
P.O. Box 6714 
Minneapolis, MN 55406 
(612)722-0931 


THE NEWMAN UTILITIES 

50 utils includes help system below and disk + 

system utilities $19.95 

EZRUN menu. Run 1-36 programs $19.95 

CACHER. speedup disk access 10X $19.95 

HELP system for DOS 3.1 + add your own $9.95 

All $45, $2 demo, 15 day MB guar., $2 Ship 

NEWMAN COMPUTER 

2 Briar Mills Drive Suite 2-A 

Bricktown, NJ 08724 

(201)458-5169 



that created 
CopyWrite 

Now you can debug your own programs 
with a professional quality debugger - 
the one that unraveled every form of 
copy-protection used on the PC. 


With the Quaid Analyzer, you can: 

□ See occurences of any interupt, with its 
meaning shown on the screen. 

□ View memory as text or instructions, 
scrolling as easily as you do with an editor. 

□ Run until a memory location or I/O port is 
changed. 

□ Protect your hard disk from accidental 
destruction. 

□ Analyze software without the source, even 
when it uses countermeasures to thwart 
tracing. 

□ See all stages of the boot load. 

We kept the Quaid Analyzer off the 
market to avoid helping publishers with 
copy-protection. Now that copy¬ 
protection is gone, we can sell it to 
you. 

The Quaid Analyzer is a software tool occupying lOOK bytes. It 
runs on any IBM PC and most MS-DOS systems without hard¬ 
ware modification. 

Quaid Software Umited 

$99 U.S. jdAt Can (416) 961-8243 

All orders shipped at^iyMB^ or write to: 
our expense within a 45 Charles St. East 

day. All major credit Third Floor, Dept. 602 

cards accepted. Toronto, Ontario. M4Y 1S2 

Ask about Disk Explorer the program that takes over 
where Quaid Analyzer leaves off. 

CIRCLE 387 ON READER SERVICE CARD 



204 


PC TECH JOURNAL 




















SOFTWARE/UTILITIES—MISCELLANEOUS/PUBLICATIONS 


TECH MARKETPLACE 

THE COMPREHENSIVE GUIDti TO PRODUCTS AND SERVICES FOR TH E M S DOS MARKET 


So ftwar e/Utilities 

XT/AT HARD DISK DIAGNOSTICS! 

Disk Manager Diagnostics performs extensive 
tests on your ST412/506 hard disks. Areas tested 
are: Controller, data write/read, seek test, auto¬ 
matic error correction(ECC), random reads and 
media defects. Interactive help. Excellent error 
detection and isolation. $49.95 + ship. VISA/MC 
accepted. 

©NTRflCK 

COMPUTER SYSTEMS INC. 


Ontrack Computer Systems, Inc. 
6222 Bury Drive 
Eden Prairie, MN 55344 
(612)937-1107 


MAKE YOUR PC 
SEEM LIKE AN AT! 

MAKE YOUR AT 
SEEM LIKE A 
DREAM MACHINE! 

WANSI- 

CONSOLE" 

The Integrated Console Utility ™ 

FAST, POWERFUL 
ANSI.SYS REPLACEMENT 

For the IBM-PC, AT, and clones 
New Version 2.00 is MUCH FASTER 

Now blink free scrolling on CGA! 
Now use EMS for scroll recall! 
New option menu program! 

•Speed up your screen writing 
•Extend your ANSI.SYS to full VT100 
•Scroll lines back onto screen 
•Save scrolled lines into a file 
•Add zip to your cursor keys 
•Free your eyes from scroll blinking 
•Easy installation 
•Get 43 line EGA support 
•Over 50 useful options 

“The psychological difference is 
astonishing” -Lotus June 85 pg 8. 

“So many handy functions rolled into 
one unobtrusive package” 

PC-World Feb 86 pg 282. 
“The support provided by the 
publishers is extraordinary.” 

■Capital PC Monitor May 86 pg 25 
“...the best choice for improving your 
console...” 

•Capital PC Monitor June 86 pg 282. 
460p Manual (w/slip case) 
and software diskettes $75. 

Satisfaction Guaranteed! 
Order Yours Today! 

HKRSEY MICRO CONSULTING 
Box 8276, Ann Arbor, Ml 48107 
(313) 994-3259 Visa/MC/Amex 

DEALER INQUIRIES INVITED 
CIRCLE3880N READERSERVICECARD 



AT’s DON’T NEED 360KB DRIVES 


The 1.2MB drive has long been known to READ but NOT reliably 
WRITE on 360KB floppies. With “CPYAT2PC” 1.2MB drives CAN 
reliably WRITE 360KB floppies saving a slot for a second hard 
disk or backup tape. “CPYAT2PC” (Not Copy Protected) offers 
the preferable SOFTWARE SOLUTION. 

• NO software or hardware modification 

• A 360K drive is NOT required 

• “CPYAT2PC” program MAY reside on hard disk 

• Runs on IBM PC/AT and COMPATIBLES 

i.e. Compaq Deskpro 286/386, AT&T 6300 + , 

HP Vectra, Sperry PC/IT, Tandy 3000 


Only $79.00 + $4.00 S/H VISA, MC, COD, UPS-B/R 
ORDER TOLL FREE 1-800-621-0851 XT777 
TELEX EZLINK 62873089 
I visa 9 Dealer Inquiries Invited 

1 MICROBRIDGE COMPUTERS 
655 Skyway #125 


San Carlos, CA 
CA 415-593-8777 
NY 212-334-1858 

CIRCLE 386 ON READER SERVICE CARD 



Introducing ARC. It’s used to create and main¬ 
tain data file archives for computers operating 
under any DOS system. . 

But it does something that other archive 
and library utilities cant It automatically 
squeezes the files being saved so they 
take up less space. Like a can of con¬ 
centrated orange juice. 

From 20% to 90% less, depending on 
the kind of data being saved! 

So thereb more room to store data, 
no matter what media it’s stored on! And 
that’s like giving a shot of vitamin C to 
your savings on equipment and supplies. 

This compressed data can be trans¬ 
mitted over telephone lines in a lot less ^ mnr . 
time than it takes to transmit uncom- n sfff 
pressed data. So you can beat the high WM 
cost of phone bills to a pulp, as well. 

ARC has a full range of functions for archive 
creation and maintenance. Including password 
encryption to protect data from unauthorized use. 

_Typi cal Compre ssion Rates 

I ASCII I 


Program 


© JW 0 

System Enhancement Associates • 21 New Street, Wayne, NJ 07470 * (201) 473-5153 


CIRCLE 389 ON READER SERVICE CARD 


Tech Marketplace ... the 

comprehensive guide to 
products and services for the 
MS DOS market. 


Miscellaneous 


Bar Coding 



$99 BAR CODE READERS 

We need Distributors & OEMs worldwide. Our 
readers are IBM PC/XT/AT & Tandy 1000/2000 
keyboard compatible, convertible to RS232 In¬ 
terface, have auto code distinction, need no ad- 
ditional software and are availabe from 
assembled board to fully packaged units. From 
US $99 plus wand in modest OEM quantities. 
ASP MICROCOMPUTERS 
P.0. BOX 259, CAULFIELD EAST 3145 
VICTORIA, AUSTRALIA 

PHONE 011 61 3 5000628 (note time difference) 


BAR CODE READERS 

• IBM, AT&T, Link, Kimtron, TeleVideo, 

• Alloy, DEC keyboard interfaces or RS-232C 

• Need others? Call. 

• NO programming. Reads dot matrix 

• Auto-recognition and single code decoding 

• Reads Code 39, UPC A/E, Codabar & 1 2 of 5 

• Units in stock, 2 year warranty 

• Bar code printing software, call for info 



2190 W. 11th 
Eugene, OR 97402 
(503)344-1189 


The BEST 

BAR CODE READER 
for the IBM PC&AT 
$595 

Simple & quick installation 
No additional software or port 
Metal wand & case 
Also available: 

Bar code printing software 

Magnetic stripe readers 

Units for other computers & terminals 

TPS ELECTRONICS 
4047 Transport Street 
Palo Alto, CA 94303 

Telephone: 415-856-6833 

Telex: (Graphnet) 371-9097 TPS PLA 
CIRCLE 394 ON READER SERVICE CARD 


Publications 

AN INVITATION TO STEAL 

Bad copyright—or none at all? Your software may 
be public domain. Protect your work before you 
show it. Learn how to copyright software inex¬ 
pensively and effectively. Software Copyright 
Guide. $6 ppd. 

Innovation Press 
Dept. 112 
Box 351 

Highland, IL 62249 


MARCH 1987 


205 























































INDEX TO ADVERTISERS 


PC TECH JOURNAL MARCH 198' 


READER 

SERVICE NUMBER ADVERTISER PAGE 


103 ACS International.149 

116 Advanced Logic Research. Cover 3 

153 Aker.158 

106 Aldebaran. 179 

118 American Small Business.184 

136 Arity Corporation.136 

206 ATI..155 

122 Arrix.Ill 

* AST Research, Inc.62 

126 AST Research, Inc.165-167 

203 Atron..8 

249 Atron.16 

238 Atronics.89 

165 Attachmate.151 


105 Barrington Systems.117 

147 Barr Systems.64 

* BC Associates.194 

104 Blaise Computing..19 

* Borland Int’l. Gatefold Cover 

254 Borland Int’l.1 

117 Burr-Brown Corp.173 

* Business Engrg. Systems.192 


111 Catamount Corp.125 

188 Century Software. 148 

114 ComCal..— 56 

* Creative Programming Consultants.86 

145 Cresent Software.168 

167 Crosstalk Communications.... Back Cover 

261 Custom Software Systems.138 

217 CXI.....137 


107 Data Light.39 

214 Desktop Ai. 180 

123 Digi Data...126 


131 Ecosoft..162 

190 ESP Software.171 

112 Evsan Co.194 


119 FairCom..97 

♦ Flagstaff Engineering.116 


READER 

SERVICE NUMBER ADVERTISER PAGE 

199 Galacticomm, Inc.22 

* Gimpel Software.124 

113 Haven Tree Software Limited.20 

132 Hawaiian Village.190 

149 Ibex Computer Corp.168 

210 I-Bus Systems...174 

134 Information Technologies.195 

138 Information Technology.82 

135 Innovation Computer.178 

108 Innovative Data Tech.154 

216 Intel Corp..44 & 45 

209 Interactive Microware.168 

139 Isogan... 112 

258 KADAK Products. 180 

148 Kurtzberg Computer Systems.175 

128 Lahey Computer Systems, Inc.80 

160 Lattice, Inc...127 

173 Lifeboat Assoc. 99 

229 LOGITECH Inc.113 

125 Lugaru... 172 

110 Macmillan Software.153 

263 Mansfield Software.162 

207 Mark Williams Co...119 

146 MDS, Inc... 163 

259 MetaWare, Inc...180 

211 Micro Data Base Systems.54 

257 MicroHelp, Inc.106 

* Microsoft Corp...21 

121 Microsoft Corp...30 & 31 

205 Microsoft Corp.26 & 27 

140 Microsoft Corp.—.. 28 & 29 

237 Microsoft Corp....—. 23 

* Microsoft Corp.. 74 

* MicroTech....—..88 

* MicroWay............189 

174 Mortice Kern... 161 

224 Nantucket Corp.139 

191 Norcom.164 

109 Novell. 176 

222 Opt-Tech Data Processing.4 

200 Oregon Software... 58 

185 Overland Data, Inc.........132 

230 Paradise Systems.6 & 7 

101 Paul Mace Software.130 

* PC Brand.140-143 

159 PC Designs. 191 

150 PCs Limited.12 & 13 

202 Peripheral Marketing. 173 

215 Perisope Company.5 

175 Programmer’s Connection.41-43 

143 Programmer’s Paradise.193 

220 Programmer’s Shop.46 

162 Programmer’s Shop.24 & 25 

183 Proteus.192 


READER 

SERVICE NUMBER ADVERTISER PAGE 


166 Raima Corp.11 

157 Rainbow Technology.180 

171 Ram Explosion..194 

181 Rational Systems.109 

137 Ryan-McFarland.187 


* Scantel Systems Ltd.194 

187 Scientific Endeavors.125 

201 SoftCraft Inc.2 

186 Soft*Rite.108 

142 Software Garden. 93 

196 Software Link.52 

168 Software Masters.170 

120 Software Merchants..;.125 

189 Software Security.98 

144 Software Solutions.100 & 101 

130 Solution Systems. 14 

177 Stargate Technologies..168 

198 Sterling Castle. 150 

176 Storage Dimensions.164 

195 Summit Software..68 & 69 

158 Sunny Hill Software..152 

184 Sunny Tech Inc.190 

231 Systems & Software.134 


194 Tall Tree Systems.35 

197 Tall Tree Systems.37 

155 Telebyte. 18 


156 Unify Corp.133 

169 Upper Bound Micro Computer.129 


115 Vermont Creative Software.17 

204 Video 7.135 


124 Wells American.107 


206 


PC TECH JOURNAL 





























































































































INDEX TO PRODUCTS 


RS# 

PRODUCT 

ADVERTISER 

PAGE 


IBM AND COMPATIBLE PCS 


116 

126 

159 

150 

The PC2/286 

AST PC 

GV 386 

Mail Order 

Advanced Logic Research 

AST Research . 

PC Designs, Inc. 

PC’s Limited . 

...Cover 3 
.. 165-167 

.191 

.12&13 

183 

124 

Compatible 

A * Star 

Proteus Technology Corp. 
Wells American . 

.192 

.107 


MULTIFUNCTION/MEMORY CARDS 

I-Bus IQ 188 Parallel Processor Ibus Systems .174 

Inboard 386/AT Intel Corporation .44&45 

Fastcard Peripheral Marketing, Inc.173 

RT Board TallTree Systems .37 


GRAPHICS CARDS 

ACS 1000/ET286 
EGA Wonder 
Professional Image Board 
LEO 

Auto Switch EGA 
Vega Deluxe 


ACS International .149 

ATI Technologies . 155 

Atronics International Inc.89 

Innovative Data Technology .. 154 

Paradise Systems .6 & 7 

Video Seven . 135 


MASS STORAGE HARDWARE 

9 Track Tape System 

9 Track Tape System 

9 Track Tape System 

9 Track Tape System 

Tapelinx/Fmance 

Perstor 200 { 

Multifunction Storage 

The Eagles Series 1 


Catamount Corporation .125 

DigiData .126 

Flagstaff Engineering .116 

Ibex Computer Systems .168 

Overland Data, Inc.132 

Systems and Software .134 

Telebyte .18 

Upper Bound Micro .129 


PRINTERS-PLOTTERS 

194 J Laser Plus 


DATA ACQUISITION 


Tall Tree Systems .35 


117 DMA Plug in Carrier Board Burr-Brown Corporation .173 

209 Catalogue Interactive Microware .168 


PRODUCT 


PROGRAMMER’S TOOLS 

Source Print 
Micro DCF 
PC Probe 
Mini Probe 
C Tools Plus 
Vitamin C 
Quick Pak 
PC/VI 

C Compiler 
dbx translator 
R-Tree/C-Tree 
PC-Lint 
Flowchart 
C-Tree Query 
Programming Tools 
Epsilon 
Help/Control 
386 Compiler 
C Cross Compiler 
MACH 2 

Windows Toolkit 
Screenio 
Qpt-Tech Sort 
Mace Utilities 
Periscope 
Mail Order 
Instant-C 
BTrieve 
Demo Program 
Visible Computer 
Turbo Professional 
Taskview 
Windows for C 


SOFTWARE UTILITIES 

254 Sidekick, Traveling Side Kick 
254 SuperKey, Turbo Lightning 
254 Lightning Word Wizard 
114 Bookmark 

190 Command Plus 
139 Easy Path 

191 Screenio 

101 Mace Utilities 
176 Speedstar 


ADVERTISER 


Aldebaran . 179 

Arrix Logic Systems .Ill 

Atron .8 

Atron .16 

Blaise Computing .19 

Creative Programming Cons.86 

Crescent Software .168 

Custom Software Systems .138 

Data Light .39 

Desktop AI .180 

FairCom .97 

Gimpel Software .124 

HavenTree Software .20 

Kurtzberg Computer System .175 

Lattice, Inc...127 

Lugaru Software .172 

MDS, Inc.163 

MetaWare .180 

Micro Tech Research . 88 

MicroHelp, Inc.106 

Microsoft Corporation .74 

Norcom .164 

Opt-Tech Data Processing .4 

Paul Mace Software .130 

Periscope Company .5 

PC Brand . 140-143 

Rational Systems .109 

Softcraft .2 

Software Garden .93 

Software Masters .170 

Sunnyhill Software .152 

Sunnyhill Software .152 

Vermont Creative .17 


Borland Int’l .Gatefold Cover & 1 

Borland Int’l.Gatefold Cover & 1 

Borland Int’l.Gatefold Cover & 1 

Corneal . 56 

ESP Software .171 

Isogon .112 

Norcom .168 

Paul Mace .130 

Storage Dimensions .164 


MICRO-MINI MAINFRAME COMMUNICATIONS 

PCOX 5250 Prods. CXI .137 

The Block Software Security .98 


GRAPHIC SOFTWARE 

GRAPH C 


Scientific Endeavors Corp.125 


LOCAL AREA NETWORKS 

3-N-l Attachmate Corporation .151 

9 Track Tape Systems Ibex .187 

Link Up, LAN Gateway Information Technologies .82 

LANscreen, LANbasic, LANbasic Soft’Rite ....108 


OTHER COMMUNICATION HARDWARE 

Galacticomm Breakthrough Galacticomm, Inc.22 

LAN Report Novell, Inc.176 

Strgate OC3000 Stargate Technologies .168 


DATA BASE MANAGEMENT SOFTWARE 

Magic PC Aker . 


Magic PC 

Reflex, The Analyst 
Reflex Workshop 
Knowledgeman 2 


Db Vista 
DataEase 
Unify 


Aker .158 

Borland Int’l.Gatefold Cover & 1 

Borland Int’l.Gatefold Cover & 1 

Micro Data Base Systems .54 

Nantucket Corporation .139 

Raima Corporation .11 

Software Solutions .100 & 101 

Unify Corporation .133 


OTHER COMMUNICATION SOFTWARE 

Term Century Software 


Term 

Crosstalk 

Galacticomm Breakthroui 
LANscreen, LANbasic, LA] 
Multi Link Advanced 


Century Software .148 

Crosstalk Comm.Back Cover 

Galacticomm .22 

Soft*Rite .108 

Software Link .52 


OPERATING SYSTEMS 

AMX Multitasking Exec. 
MKS Tool Kit 


KADAK Products Ltd.180 

Mortice Kern Systems, Inc.161 


LANGUAGES 

Prolog Compiler 
Clarion 

Turbo Pascal, Gameworks 

Turbo Database Toolbox, Prolog 

Turbo Editor, Editor Toolbox 

Turbo Graphix Toolbox 

ECO-C88-Microstat 

Marshal Pascal 

F77L Lahev Fortran 

Best New Programs 

Modula 2 

Personal REXX 

Let’s C 

Quick Basic II 
Language Newsletter 
Microsoft C 

Microsoft Assembler (MASM) 
Microsoft Fortran 
Pascal Compiler 
Brief 

Better Basic 


Arity, Inc.136 

Barrington Systems, Inc.117 

Borland Int’l.Gatefold Cover & 1 

Borland Int’l.Gatefold Cover & 1 

Borland Int’l.Gatefold Cover & 1 

Borland Int’l.Gatefold Cover & 1 

Ecosoft Inc.162 

Innovation Computers .178 

Lahey Computer Systems .80 

Lifeboat Associates . 99 

Logitech Inc. 113 

Mansfield Software .162 

Mark Williams Co. 119 

Microsoft Corporation .30 & 31 

Microsoft Corporation . 21 

Microsoft Corporation .28 & 29 

Microsoft Coiporation .23 

Microsoft Corporation .26 & 27 

Oregon Software .58 

Solution Systems .14 

Summit Software . 68 & 69 


SECURITY DEVICES 

Software Sentinel 


MAILORDER 

Mail Order 
Mail Order 
Mail Order 
Mail Order 
Mail Order 
Mail Order 
Mail Order 
Mail Order 

Util., Edit, Funct., Graphics 

Mail Order 

Mail Order 

Mail Order 

Mail Order 

Mail Order 


Rainbow Technologies, Inc. .180 


BC Associates .194 

Business Engineering Syst.192 

Evsan Company .194 

Hawaiian Village Computer .190 

Microway .189 

PC’s Limited .12 & 13 

Programmer’s Connection .41-43 

Programmer’s Paradise .193 

Programmer’s Shop .46 

Programmer’s Shop .. 24 & 25 

Ram Explosion .1 94 

Scantel Systems Ltd.194 

Sunnytecn, Inc.190 


MARCH 1987 


207 






































































































































MARCH 

March 15-20 
GUIDE 67 
Anaheim, CA 

Sponsor: guide International 
Contact: Bill Reinberger, 
guide International, 111 E. 
Wacker Drive, Chicago, IL 
60601; 312/644-6610 

March 17-19 

Reliability in Distrib¬ 
uted Software and Data¬ 
base Systems 
Williamsburg, VA 

Sponsor: ieee-cs 
Contact: Edwin C. Foudriat, 
NASA, Langley Research Cen¬ 
ter, Information Systems 
Division, MS 469, Hampton, 
VA 23665; 804/865-3535 

March 17-19 

Optical Storage of Docu¬ 
ments and Images 
Washington, DC 

Sponsor: Rothchild 
Contact: Rothchild Consul¬ 
tants, 256 Laguna Honda 
Blvd., Sail Francisco, CA 
94116-1496; 415/681-3700 

March 22-26 

Computer Graphics ’87 
Philadelphia, PA 

Sponsor: National Computer 
Graphics Association 
Contact: NCGA, 2722 Merri- 
lee Drive, Suite 200, Fairfax, 
VA 22031; 800/225-6422; in 
Virginia, 703/698-9600 

March 23-27 

Theory and Practice of 
Software Development 
(TAPSOFT’87) 

Pisa, Italy 

Sponsor: University di Pisa 


Contact: Pierpaolo Degano, 
Dipartimento di Informatica 
Universite di Pisa, Corso Ita¬ 
lia, 40 1-56100 Pisa, Italy 

March 30-April 2 

Ninth International 
Conference on Software 
Engineering 
Monterey, CA 

Sponsors: acm sigsoft 
(Software Engineering) 
and ieee-cs 

Contact: William E. Riddle, 
Software Design and Analy¬ 
sis, 1760 Bear Mountain 
Drive, Boulder, CO 80303; 
303/499-4782 

March 31-April 3 

ANSYS 1987 Conference 
and Exhibition 
Newport Beach, CA 

Sponsor: Swanson Analysis 
Systems, Inc. 

Contact: Swanson Analysis 
Systems, Inc., Johnson Road, 
P.O. Box 65, Houston, PA 
15342-0065; 412/746-3304 

March 30-April 3 

Robotics and Automation 
Raleigh, NC 

Sponsor: ieee-cra 
Contact: Harry Hayman, 

738 Whitaker Terrace, 

Silver Spring, MD 20901; 
301/434-1990 


APRIL 

April 1-3 

Database Systems for 
Office Automation, 
Engineering, and Sci¬ 
entific Applications 
Darmstadt, West Germany 
Sponsor: Gesellschaft fur 
Informatik 


Contact: H.-J. Schek, Tech- 
nische Hochschule Darm¬ 
stadt, Fachgebiet Datenver- 
waltungs-systeme I, Fachbe- 
reich Informatik, Alexander- 
strape 24, D-6100 Darmstadt, 
West Germany 

April 5-9 

CHI + GI ’87 

Toronto, Ontario, Canada 

Sponsor: ACM 
Contact: Wendy Walker, chi 
+ gi ’87, Computer Systems 
Research Institute, University 
of Toronto, 2002-10 Kings 
College Road, Toronto, 
Ontario, Canada M5S 1A4; 
416/978-5184 

April 8-10 

Mathematical Founda¬ 
tions of Programming 
Semantics 
New Orleans, LA 

Sponsor: ACM 
Contact: ACM, 11 W. 42nd 
Street, New York, NY 10036; 
212/869-7440 

April 9-10 

Advanced SPSS/PC+ 
Austin, TX 

Sponsor: SPSS Inc. 

Contact: SPSS Inc., Training 
Department, 444 N. Michigan 
Avenue, Chicago, IL 60611; 
312/329-3557 

April 9-10 

A Manager’s View of Ex¬ 
pert Systems Building 
Atlanta, GA 

Sponsor: Georgia Institute 
of Technology 
Contact: Deidre Mercer, 
Department of Continuing 
Education, Georgia Institute 
of Technology, Atlanta, GA 
30332-0385; 404/894-2547 


April 21-24 

PERSCOMP ’87 
Sofia, Bulgaria 

Sponsor: Bulgarian Academy 
of Sciences 

Contact: Dr. Marcel Israel, 
ITKR/BAN, 113 SOFIA/BULGARIA, 
Acad. G.Bonchev Str., bl.2 

April 22-24 

AI’87 

Long Beach, CA 

Sponsor: Tower Confer¬ 
ence Management 
Contact: Jim Hay, Show 
Manager AI’87, TCM, 331 
W. Wesley Street, Wheaton, 

IL 60187; 312/668-8100 

April 27-29 

Symposium on Security 
and Privacy 
Oakland, CA 

Sponsors: ieee-cs and iacr 
Contact: Virgil D. Gligor, De¬ 
partment of Electrical Engi¬ 
neering, University of Mary¬ 
land, College Park, MD 
20742; 301/454-8846 


CALL FOR PAPERS 

Deadline:M&‘cfc3° 
International Confer¬ 
ence on Information 
Systems 
Pittsburgh, PA 
(December6-9, 1987) 
Sponsors: Society for In¬ 
formation Management 
and the, institute for 
Management Sciences 
Submit papers tb: Charles 
H. Kriebel, Graduate 
School of Industrial Ad¬ 
ministration, Camegie- 
Mellon University, Pitts¬ 
burgh, PA 15213 


208 


PC TECH JOURNAL 


ILLUSTRATION • DAVID PO> 



Advanced Logic Research Gi 
You Everything a Mail Order 
House Can’t_at the Same Price 


See and Feel Your ALR Computer 
Before You Buy It. 

If you’ve been thinking that the only way 
to get into a low-cost compatible PC is to 
make a blind purchase from a mail-order 
house, THINK AGAIN. Today’s best value 
in Personal Computers comes from your 
local Advanced Logic Research Dealer! 
You can see and feel your ALR PC before 
you buy it. You can talk to an expert who 
can make qualified recommendations and 
take the time to custom-fit an ALR system 
to your particular needs. 

Thke a look at ALR’s DART and DART 
012 systems. DART offers the best 286 
technology in a high performance, low-cost 
personal computer. The DART 012 blows 
the lid off of PC performance with true 
12MHz speed and 0 wait state. 


Before you make a blind purchase , 
Think Again. 


You Don't Need To Buy 
A Memory Card 

The most intelligent PC designs to date, 
DART systems include LIM/EMS support 
(Lotus® /Intel® /Microsoft® Enhanced 
Memory Specification). That, plus having on 
board expandable memory of 2Mb (DART) 
and 3Mb (DART 012) means that you can 
break the 640K barrier without the added 
expense of a memory enhancement card. 

Intelligence 

Advanced Logic Research brings 
together the best features offered by 
anyone in the microcomputer industry. We 
provide a complete solution to the PC 
buyer’s needs. 



Engineering Support 


Dealer Support 


t 

1 



EMS Support 


J\ P - 




□ 

□ 

S 

□ 


Intelligent design, quality conscious 
manufacturing and affordability along with 
the added value of local dealer support and 
guidance make the purchase of an ALR 
PC the best possible choice. Before you 
make a blind purchase from a mail-order 
computer warehouse see your local ALR 
dealer and take a long look at value. 


Performance 


DART $2295.00 

Phoenix BIOS 
1.2Mb Floppy Drive 
1Mb RAM Expandable to 2Mb 
EMS Software 

Hard/Floppy Disk Controller 
2 Serial Ports/Parallel Port 
Large RT Style Keyboard 
Battery Backup Clock Calendar 
System Set-up Configuration 


DART 012 $2695.00 

Modular Bus Design 
Phoenix Bios 
80286-12 Microprocessor 
80287 Socket on CPU Card 
1.5Mb RAM Expandable to 3Mb 
EMS Software 

High Speed SONs 256K DRAM 
1.2Mb Floppy Disk Drive 
Combination Hard Disk/Floppy Controller 
2 Serial Ports, 1 Parallel Port 
Large RT Style Keyboard 
Battery Backup Clock Calendar 


Mail Order 
$2295 


ALR 

$2295 


| Available 

I only 

I through 
I Qualified 
ALR Dealers. 


Advanced Logic Research, Inc. 

10 Chryslei; Irvine, California 92718 - (714) 581-6770 

FAX: (714) 581-9240 -TELEX: 5106014525, Answer back Advanced Logit- 
Ask for ext. 12 



CIRCLE NO. 116 ON READER SERVICE CARD 



Lotus is a registered trademark of Lotus Development Corp.. Intel is a registered trademark of Intel Corp.. Microsoft is a registered trademark of Microsoft Corp. 


















































‘ \5««v 


^nnfc 


No matter where you take 
CROSSTALK* Mk.4... 

You won’t encounter a PC communications program with as much versatility as 
CROSSTALK®Mk. 4. It has everything we could imagine you needing today. More 
protocols — X.PC, Xmodem, Kermit, and our own CROSSTALK. More terminal 
emulations, including complete IBM 3IOI, DEC VT-100, and TeleVideo 900 
series Concurrent communications capability — up to 15 sessions, each 
displayed in its own expandable window, or on separate ' 'pages. ’ ’ Error 
checking at high speeds. Prepared script files to extract information from 
most popular information utilities. A powerful programming language 
to create customized scripts. Finally, we’ve built-in a bit of tomorrow. 
CROSSTALK Mk. 4 is based on a modular architecture that means we 
can add new capabilities by phone, as they come along. So you’re 
^ getting more than today’s standard in communications software. 

\ % You’re getting tomorrow’s as well. 

\ TA I I/® Digital Communications Associates, Inc. 

V ; 1 \-^1\ L/\\ I ALlX 1 000 Holcomb Woods Parkway 

com MU N ICATION s Roswell. Georgia 30076